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 类型的最小值,因为整数溢出是环绕 的。

相关推荐
教练、我想打篮球13 天前
63 网络交互的过程中目标设备的选择
linux·net·eth0
IT成长日记18 天前
【Docker基础】Docker核心概念:命名空间(Namespace)之NET详解
运维·docker·容器·namespace·net
百锦再21 天前
.NET 类库开发详细指南c
java·log4j·.net·net·dot
我的golang之路果然有问题2 个月前
快速上手GO的net/http包,个人学习笔记
笔记·后端·学习·http·golang·go·net
草海桐2 个月前
go 的 net 包
网络·golang·net
耕耘虫3 个月前
解决 .Net 6.0 项目发布到IIS报错:HTTP Error 500.30
网络·网络协议·http·iis·net·静态文件·.net 6.0
云草桑3 个月前
Microsoft Azure 基础知识简介
microsoft·net·microsoft azure
江沉晚呤时3 个月前
精益架构设计:深入理解与实践 C# 中的单一职责原则
java·jvm·算法·log4j·.netcore·net
江沉晚呤时3 个月前
深入解析 .NET Core 垃圾回收(GC):概念、工作原理与优化策略
java·jvm·算法·c#·asp.net·.netcore·net
江沉晚呤时3 个月前
桥接模式(Bridge Pattern)在 .NET Core 中的实现
java·开发语言·后端·c#·.netcore·net