【C#每日一帖】给变量赋常量值的编译错误解决

short x = -1;
x = 0xffff;
对于上面写出的代码,在VS2008下C#语言下有错误吗?
回答是“有的”,第二行代码会出现编译错误:
常量值“65535”无法转换为“short”。

在VS2008下(x86),常量值默认是int型,也就是32位数值类型,直接把它赋值给short型变量是行不通的。
那么,我们给它加强制转换会怎么样呢?
编译仍然通不过,不过提示稍微有了变化:
常量值“65535”无法转换为“short”(使用“ unchecked ”语法重写)。

这种错误如何避免呢?这里,我们通过提示了解到,需要借用 unchecked 关键字来避免此类情况。
那这个关键字怎么用呢?还是请教MSDN这位老师吧。
先来了解下, unchecked  关键字的作用:

unchecked 关键字用于取消整型算术运算和转换的溢出检查。

/// 用法1
 unchecked
{
    int val = 2147483647 * 2;
}


/// 用法2
public int UncheckedAdd(int a, int b)
{
    return unchecked(a + b);
}
好了,知道这个关键字怎么用了,那就给我们的代码动个小手术吧。

改成如下代码即可编译通过,不要犹豫了,赶紧试试吧!

unchecked
{
short x = -1;
x = (short)0xffff;
}

你可能感兴趣的:(【C#每日一帖】给变量赋常量值的编译错误解决)