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

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

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

这种错误如何避免呢?这里,咱们经过提示了解到,须要借用 unchecked 关键字来避免此类状况。
那这个关键字怎么用呢?仍是请教MSDN这位老师吧。
先来了解下, unchecked  关键字的做用:

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

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


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

改为以下代码便可编译经过,不要犹豫了,赶忙试试吧!spa

unchecked
{
short x = -1;
x = (short)0xffff;
}
相关文章
相关标签/搜索