Architect's Log

I'm a Cloud Architect. I'm highly motivated to reduce toils with driving DevOps.

checkedキーワードとuncheckedキーワード

C#でcheckedキーワードとuncheckedキーワードというものを知りました。

checkedキーワード、uncheckedキーワードとは?

MSDNから引用します。
checked (C#)
checked キーワードは、整数型の算術演算および変換に対してオーバーフロー チェックを明示的に有効にするために使用します。 ...

unchecked (C#)
unchecked キーワードは、整数型の算術演算および変換に対してオーバーフロー チェックを抑制するのに使用します。 ...

検証

検証してみましょう。

using System;
using NUnit.Framework;

namespace CheckedTest {
    [TestFixture]
    public class Class1 {
        [Test]
        public void CheckedTest() {
            short x = short.MaxValue;
            short y = 1;
            Assert.Throws<OverflowException>(() => { int z = checked((short) (x + y)); });
        }

        [Test]
        public void UncheckedTest() {
            short x = short.MaxValue;
            short y = 1;
            // 循環してマイナスの最大値になる。
            int z = unchecked((short) (x + y));
            Assert.IsTrue(z == short.MinValue);
        }
    }
}

でも

uncheckedってどんな時に使うのでしょう?私には使い方がイメージできませんでした。