checked和unchecked关键字
- checked关键字用来检查数学运算溢出的,在数学运算发生溢出时,会抛出OverflowException;
- unchecked关键字不检查数学运算移除,在数学运算发生溢出时也不会报错。
编译器检查移除的情形只适用于使用常量的运算,如:
int temp = int.MaxValue * 2;
//这条语句编译不通过,在编辑器上会显示出一条红线,就是因为在进行常量进行运算时,编译器检查出溢出错误,提前报错。
int temp = int.MaxValue;
int a = temp * 2;//temp是int型变量。
Console.WriteLine(a);
//这样编码可以编译通过,不会报错,但是因为运算溢出的错误,所以不会得到正确的答案。
unchecked关键字用处在于,当不需要得到精确结果时,可以使用它进行限定从而可以避免编译时发生错误。例如:
生成一个对象的HashCode,比如说根据一个算法计算出一个相对随机数,这都是不需要准确结果的。溢出不溢出没有多大影响。