现在的位置: 首页 > 综合 > 正文

关于C#基本语法的一些注意事项

2012年10月01日 ⁄ 综合 ⁄ 共 884字 ⁄ 字号 评论关闭
【最后更新:2009年9月15日】
一、关于强制转换:Convert 和 (int) 的区别
            Convert.ToInt32() 方法转换double类型的数据是“5舍6入”的。
            (int) 方法转换double类型的数据是只取小数点前面的整数。

例:下面几种转换方法运行后得到的结果是不同的                  

//第一种
int a = Convert.ToInt32(2.5);  //强制转换的结果为 2

//第二种
int a = Convert.ToInt32(2.6);  //强制转换的结果为 3

//第三种
int a = (int)(2.6);  //强制转换的结果为 2

二、 溢出检测
      在C#语言中,可以使用checked关键字进行溢出检测,与之对应的是unchecked关键字,将忽略溢出。
      以byte为例,byte即字节,一个字节有8位。在计算机中,所有的数据以二进制存储,每个位上存储的数据
非0即1,那么一个字节的数据存储的最大的二进制数据为 (11111111)2 ,将其进行二进制到十进制的转换,则
为255。也就是说,一个byte类型的数据不能大于255,大于255时将会发生溢出。
      使用checked关键字可以对程序中可能出现的溢出现象进行检测,用法如下:
      

//运行下面的代码时,将会抛出异常
byte b = 255;
checked
{
    b
++;
}

//如果不希望进行溢出检测,则可使用unchecked关键字,
//不会抛出异常,程序正常结束,运行结果为 0
byte b = 255;
unchecked
{
    b
++;
}

//注意:以下写法也不会抛出异常
//运行结果为 0
byte b = 255;
b
++;

      注意:本例得到一个不合理的等式,即 255 + 1 = 0。这是因为变量 b 进行自增运算后的二进制的值变为
(100000000)2 ,而byte类型只能有8位,因此将多出的一位抛弃,所以最后得到的结果为(00000000)2 其十进制
为 0,所以 b 的结果为 0。

抱歉!评论已关闭.