checked 溢出问题

csharp 复制代码
 {
     try
     {
         int i = int.MaxValue;
         int j;
         checked
         {
             j = i + 1;
         }
        
     }
     catch (OverflowException er)
     {

         Console.WriteLine($"加Checked------>{er.Message}");
     }
     
 }
 {
     try
     {
         int i = int.MaxValue;
         int j;
         j = i + 1;
     }
     catch (OverflowException  er)
     {

         Console.WriteLine($"没有加Checked------>{er.Message}");
     }
     

    
 }
  • 溢出检查 :在 checked 关键字包围的代码块中,如果发生整数溢出,编译器会抛出 OverflowException 异常。

  • 默认行为:在 C# 中,默认情况下,整数运算不会检查溢出,如果发生溢出,结果会被截断,而不是抛出异常。

所以即使发生溢出,也不会抛出异常。结果是 i + 1 被截断为 int 类型的最小值,因为整数溢出是环绕 的。

相关推荐
百锦再5 天前
.NET 的 WebApi 项目必要可配置项都有哪些?
java·开发语言·c#·.net·core·net
汪小白JIY8 天前
【Abp.VNext】Abp.Vnext框架模块学习
net·abp.vnext
百锦再1 个月前
WPF依赖属性深度解析:从原理到高级应用
wpf·依赖·绑定·验证·net·强制
尸僵打怪兽1 个月前
C#项目准备
c#·vs2022·net
liulilittle1 个月前
.NET ExpandoObject 技术原理解析
开发语言·网络·windows·c#·.net·net·动态编程
百锦再2 个月前
服务器间接口安全问题的全面分析
运维·服务器·安全·api·jwt·token·net
教练、我想打篮球2 个月前
63 网络交互的过程中目标设备的选择
linux·net·eth0
IT成长日记2 个月前
【Docker基础】Docker核心概念:命名空间(Namespace)之NET详解
运维·docker·容器·namespace·net
百锦再2 个月前
.NET 类库开发详细指南c
java·log4j·.net·net·dot
我的golang之路果然有问题4 个月前
快速上手GO的net/http包,个人学习笔记
笔记·后端·学习·http·golang·go·net