您的位置:首页 > 文旅 > 旅游 > 国外包装设计网站大全_建立网站基本知识_兰州网络推广新手_企业培训考试系统

国外包装设计网站大全_建立网站基本知识_兰州网络推广新手_企业培训考试系统

2024/12/27 12:23:33 来源:https://blog.csdn.net/qq_39847278/article/details/144747657  浏览:    关键词:国外包装设计网站大全_建立网站基本知识_兰州网络推广新手_企业培训考试系统
国外包装设计网站大全_建立网站基本知识_兰州网络推广新手_企业培训考试系统

总目录


一、概述

  • checked 和 unchecked 语句指定整型类型算术运算和转换溢出检查上下文。

  • 当发生整数算术溢出时,溢出检查上下文将定义发生的情况。

    • 在已检查的上下文中,引发 System.OverflowException;
    • 如果在常数表达式中发生溢出,则会发生编译时错误。
    • 在未检查的上下文中,会通过丢弃任何不适应目标类型的高序位来将操作结果截断。

二、语句

  • checkedunchecked 语句指定整型类型算术运算和转换的溢出检查上下文。

具体使用见下面案例:

     	static void Main(string[] args){uint a = uint.MaxValue;//【一】检查代码段 unchecked{ }unchecked{Console.WriteLine(a + 1);  // output: 0}try{checked{Console.WriteLine(a + 1);}}catch (OverflowException e){Console.WriteLine(e.Message);  // output: 算术运算导致溢出。}//由上可知,当我们使用checked的时候会做溢出检查,会抛出异常// 当我们使用unchecked的时候不会做溢出检查,不会有异常

三、表达式

  • 若要为表达式指定溢出检查上下文,还可以使用 checked 和 unchecked 运算符

具体使用见下面案例:

    		//【二】检查表达式 unchecked()double d = double.MaxValue;int i = unchecked((int)d);Console.WriteLine(i);  // output: -2147483648try{i = checked((int)d);}catch (OverflowException e){Console.WriteLine(e.Message);  // output: 算术运算导致溢出。}Console.ReadLine();}

四、本地函数与 Checked

  • checked 和 unchecked 语句和运算符仅影响以文本形式存在于语句块或运算符括号内的操作的溢出检查上下文

具体使用见下面案例:

      static void Main(string[] args){int Multiply(int a, int b) => a * b;int factor = 2;try{checked{Console.WriteLine(Multiply(factor, int.MaxValue));  // output: -2}}catch (OverflowException e){Console.WriteLine(e.Message);}try{checked{Console.WriteLine(Multiply(factor, factor * int.MaxValue));}}catch (OverflowException e){Console.WriteLine(e.Message);  // output: Arithmetic operation resulted in an overflow.}}
    internal class Program{static void Main(string[] args){int factor = 2;try{checked{Console.WriteLine(Multiply2(factor, int.MaxValue));  // output: -2}}catch (OverflowException e){Console.WriteLine(e.Message);}try{checked{Console.WriteLine(Multiply2(factor, factor * int.MaxValue));}}catch (OverflowException e){Console.WriteLine(e.Message); // output: Arithmetic operation resulted in an overflow.}}private static int Multiply2(int a, int b){return a * b;}}

注意,在前面的示例中:

  • 有一个本地函数Multiply ,一个正常的私有函数Multiply2
  • 当使用 Console.WriteLine(Multiply2(factor, int.MaxValue)); 这样的方式调用 本地函数Multiply 或私有函数Multiply2,checked 语句不会引发任何异常。
  • 当使用 Console.WriteLine(Multiply2(factor, factor * int.MaxValue)); 这样的方式调用 本地函数Multiply 或私有函数Multiply2,由于第二个参数 的表达式 会引起 checked 语句的上下文检查,因此会引发异常。
      static void Main(string[] args){int Multiply(int a, int b) => a * b;int factor = 2;try{unchecked{Console.WriteLine(Multiply(factor, int.MaxValue));  // output: -2}}catch (OverflowException e){Console.WriteLine(e.Message);}try{unchecked{Console.WriteLine(Multiply(factor, factor * int.MaxValue)); // output: -4}}catch (OverflowException e){Console.WriteLine(e.Message);  }}
  • unchecked 则都不会引发异常。

结语

回到目录页:C# 知识汇总
希望以上内容可以帮助到大家,如文中有不对之处,还请批评指正。


参考资料:
已选中和未选中的语句(C# 参考)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com