c# checked unchecked 关键字】的更多相关文章

checked 和 unchecked关键字用来限定检查或者不检查数学运算溢出的:如果使用了checked发生数学运算溢出时会抛出OverflowException:如果使用了unchecked则不会检查溢出,算错了也不会报错. 1. 一段编译没通过的代码 1 int a = int.MaxValue * 2; 以上代码段编译没有通过,在VS2010中会有一条红色的波浪线指出这段代码有问题:”The operation overflows at compile time in checked m…
checked 和 unchecked关键字用来限定检查或者不检查数学运算溢出的:如果使用了checked发生数学运算溢出时会抛出OverflowException:如果使用了unchecked则不会检查溢出,算错了也不会报错. 1. 一段编译没通过的代码 1 int a = int.MaxValue * 2; 以上代码段编译没有通过,在VS2010中会有一条红色的波浪线指出这段代码有问题:”The operation overflows at compile time in checked m…
Java 中定义了两类异常: 1) Checked exception: 这类异常都是Exception的子类 .异常的向上抛出机制进行处理,如果子类可能产生A异常,那么在父类中也必须throws A异常.可能导致的问题:代码效率低,耦合度过高.C#中就没有使用这种异常机制. 2) Unchecked exception: 这类异常都是RuntimeException的子类,虽然RuntimeException同样也是Exception的子类,但是它们是特殊的,它们不能通过client code…
ThrowableClass Error  (unchecked) Exception IOException (checked) RuntimeException (unchecked) public void read(String filename) { try { InputStream in = new FileInputStream(filename); int b; while((b = in.read()) != -1){ process input } } catch(IOEx…
static void Main(string[] args) { byte b1 = 100; byte b2 = 250; //Checked try { byte sum = checked ((byte) Add(b1, b2)); Console.WriteLine(sum); Console.ReadLine(); } catch (OverflowException Ex) { Console.WriteLine(Ex.Message); } } static int Add(in…
特殊语句 yield语句 yield用于终止迭代 只能使用在返回类型必须为 IEnumerable.IEnumerable<T>.IEnumerator 或 IEnumerator<T>的方法.运算符.get访问器中 using System; namespace statement { class Program { static System.Collections.Generic.IEnumerable<int> Range(int from, int to) /…
static void CheckedUnCheckedDemo() { int i = int.MaxValue; try { //checked //{ // Console.WriteLine(i + 1); //} unchecked { Console.WriteLine(i + ); } } catch(OverflowException ex) { Console.WriteLine(ex.Message); } }…
参考MSDN 代码: public class BytesOperate { /// <summary> /// 计算校验和,SUM /// </summary> public byte CalculateCheckSum(byte[] data) { , (current, t) => current + t); return (byte)(sum & 0x00ff); } public short CombineBytesToShort(byte high, by…
C#的 checked关键字用于对整型算术运算和转换显式启用溢出检查. 简单点说,我们在进行数值计算时,运算结果可能会超出该类型能表达的数值范围,因而结果溢出.而这个溢出如果是含有变量的表达式的话,编译器默认是不会检查的(见第三段代码),为什么不检查,因为溢出检查比较耗时.可是我们在实际应用中,可能会遇到计算结果不能溢出的情况,因而我们可以使用checked块标记这段代码,然后运行时一旦发生溢出,这里会抛出异常,从而我们可以对其采取相应的解决方法. unchecked关键字则阻止溢出检查.注意这…
1.对基元类型执行的许多算术运算都可能造成溢出,有如下代码: Byte b=100; b=(Byte)(b+200); 简单的解读上面的代码: 第一步,将所有的操作数都扩大至32位或者64位(根据操作系统的位数决定).所以b和200(这两个值都不超过32位),首先转换成32位(假设当前操作系统是32位),然后加到一起.结果就是一个32位值(十进制300或者十六进制12C).注意此时的值为一个32位的操作数,必须转型为一个byte.C#不会隐式地执行这个转型操作,这正是第二行代码需要强制转换为By…