我如何定义已检查整数的列表

2024-04-21

我有一个整数列表定义为List<int> myIntList = new List<int>();像往常一样,我将使用以下方法为列表添加值myIntList.Add()方法。我面临的问题是列表中的值是动态的(某些计算的结果),可能超过整数可以容纳的最大值。

考虑以下场景:

 int x = int.MaxValue;
 myIntList.Add(x + 1); 

这将添加-2147483648到列表而不是抛出异常。我需要在这里抛出异常。我知道myIntList.Add(checked(x + 1));将完美完成这项工作,或者我什至可以将 myIntList.Add() 包含在其中checked{}像下面这样:

 checked
     {
         myIntList.Add(12);
         myIntList.Add(int.MaxValue);
         myIntList.Add(x + 1);
     }

这是我的问题有什么替代方案吗?我可以定义一个检查整数列表吗?如何制作一个列表,在添加到列表中的值超出限制的情况下抛出异常?

Updates:

谢谢大家的回复,大多数人建议在将它们添加到列表之前检查整数(如果超出边界则抛出异常)。这与我通过给定代码片段所做的相同checked{// add elements }它将抛出异常,而无需任何复杂的条件检查。


你在错误的层面上解决问题。首先,您的计算 - 它返回某种类型的值 -int, long等等。不应该检查溢出吗?是不是没有溢出,而是返回long, 例如?

如果在添加到容器时仍然需要这样做,您可以像这样创建检查列表:

class CheckedList : List<int>
{
    public void Add(long x)
    {
        if (int.MaxValue < x || int.MinValue > x) throw new ArgumentOutOfRangeException("Invalid");
        var i = (int) x;
        base.Add(i);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我如何定义已检查整数的列表 的相关文章

  • 中间件 API 的最佳实践是什么? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我们正在开发一个中间件 SDK 采用 C 和 Java 语言 供游戏开发人员 动画软件开发人员 阿凡达开
  • asp.net c# 将数据集中的数据转换为电子邮件正文?

    从数据集到电子邮件正文的最佳方式是什么 我有一个 net 控制台应用程序 用于根据存储过程的结果发送电子邮件通知 并且想知道如何最好地从 SQL 数据转到电子邮件正文 带有颜色和字体的 html 正文是最好的 但纯文本也可以 thanks
  • 我想将对象列表添加到 firestore 文档中,-flutter

    我想将对象列表添加到 firestore 文档 我定义了产品数据模型 我还有类别数据模型 我想将类别列表添加到 firestore 中的产品文档中 我将类别添加到临时列表 然后将值放入product categories 产品 类别 类别t
  • 使用静态类型代替变量

    当您的项目不使用命名空间时 有什么方法可以告诉编译器使用静态类型而不是变量吗 例如 我有一个名为 User 的类 它具有各种静态和非静态方法 假设调用了其中一个静态方法GetUser 我想称之为User GetUser 方法来自一个方法 该
  • 具有多重继承的类的 sizeof

    首先 我知道 sizeof 取决于机器和编译器的实现 我使用的是 Windows 8 1 x64 gcc 5 3 0 没有标志传递给编译器 我从大学讲座中得到了以下代码 include
  • 如何防止字符串被截留

    我的理解 可能是错误的 是 在 C 中 当你创建一个字符串时 它会被实习到 实习生池 中 这保留了对字符串的引用 以便多个相同的字符串可以共享操作内存 但是 我正在处理很多很可能是唯一的字符串 一旦完成每个字符串 我需要将它们从操作内存中完
  • 从窗口内容截取屏幕截图(无边框)

    我正在寻找有关如何使用 C 将表单内容保存在位图中的解决方案 我已经尝试过使用 DrawToBitmap 但它捕获了所有带边框的窗口 这就是这段代码的结果 public static Bitmap TakeDialogScreenshot
  • 套接字:监听积压并接受

    listen sock backlog 在我看来 参数backlog限制连接数量 这是我的测试代码 server initialize the sockaddr of server server sin family AF INET ser
  • 为什么C++变量是指针时不需要正确定义?

    我对 C 语言完全陌生 特别是指针 经验主要是 PHP 并且希望对以下内容进行一些解释 我已经尝试寻找答案 这两行代码如何能够在我的程序中完成完全相同的工作 第二行似乎违背了我迄今为止所学到和理解的关于指针的一切 char disk 3 D
  • .Net Core 中的脚手架以及解决方案中的多个项目

    我创建了一个针对 net461 的 Net Core MVC6 应用程序 我使用了一个我非常熟悉的项目结构 其中我将数据 模型和服务类放置在单独的类库项目中 并且 Web 项目引用这些项目 当我尝试搭建控制器时 我收到一条错误 指出我正在搭
  • Qt mouseReleaseEvent() 未触发?

    我有一个显示图片的库 我们称之为 PictureGLWidget 其中 class PictureGLWidget public QGLWidget 所以 PictureGLWidget 扩展了 QGLWidget 在PictureGlWi
  • System.diagnostics.process 进程在托管后无法在 IIS 上运行?

    我正在尝试从网络应用程序安装 exe 当我在本地运行应用程序 从 asp 开发服务器 时 它安装正确 但当我托管在 IIS 上时 它不起作用 我在asp net页面的Page load方法上编写了这段代码 想要在客户端计算机上安装Test
  • 如何从代码隐藏中向我的 div 添加点击事件?

    如何从代码隐藏中向我的 div 添加点击事件 当我点击 div 时 会出现一个消息框 其中显示 您想删除它吗 并在框中显示 是 或 否 全部来自后面的代码 while reader Read System Web UI HtmlContro
  • 如何解释“错误C2018:未知字符'0x40'?[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 在编译一些代码时 我收到以下信息 错误 C2018 未知字符 0x40 我想知道如何解决这样的问题 这是我要开始的地方
  • C 中的 N 依赖注入 - 比链接器定义的数组更好的方法?

    Given a 库模块 在下文中称为Runner 它作为可重复使用的组件 无需重新编译 即静态链接库 中应用程序分区架构的 而不是主分区 请注意 它仅包含main 出于演示目的 Given a set 顺序无关 调用的其他模块 对象Call
  • 在 try catch 块中返回到 catch 内是否不好?这是很好的做法

    在 try catch 块中从 C 中的 catch 块返回值是不好的做法吗 try Some code return 1 catch return 0 哪种使用 try catch 的方法是好的做法 不需要 只要返回的值是你想要的 你可以
  • 实体框架代理创建

    我们可以通过使用来停止在上下文构造函数中创建代理 this Configuration ProxyCreationEnabled false 在 EF 4 1 中创建代理有哪些优点和缺点 代理对于两个功能是必需的 延迟加载 导航属性在第一次
  • 在代码中而不是 XAML 中呈现 UserControl

    我想用RenderTargetBitmap将 UserControl 呈现为位图 而无需为其编写 XAML 当我这样做时 我得到一张空白图像 我是否错过了关键的一步 ValTool Controls VideoFisheyeOverlayC
  • 致命错误 C1001:编译器中发生内部错误(编译器文件“msc1.cpp”,第 1325 行)

    当我编译代码时 错误指向以下类 该错误在两行上突出显示 如下所示 tm validFrom tm validUntil struct t SslCertData final struct t Contact TCHAR Organizati
  • 如何向 ItemsControl 中的 WPF 按钮添加相同的命令

    如何将命令添加到 wpf 按钮 该按钮是ItemsControl并正在修改ItemsSource itself 这是我的 XAML

随机推荐

  • @ControllerAdvice 未触发

    我正在开发 Spring MVC Webflow 应用程序 版本 3 2 并尝试进行异常处理 我可以将自定义异常消息输出到日志文件和 error jsp 我遇到的问题是异常处理程序没有被解雇 我创建了以下类并对其进行了注释 Controll
  • 如何以编程方式从设置中设置默认启动器?

    我想将我的启动器设置为默认启动器 我的代码对很多人来说都可以正常工作 但在乐视设备上却无法正常工作 因为它提供了从默认应用程序设置中设置默认启动器的功能 运行此代码时 它会在默认启动器上移动 但仅在乐视设备中不显示启动器选择器弹出窗口 如何
  • libgdx 中帧缓冲区的结果不明确

    我得到以下奇怪的结果帧缓冲区 http libgdx badlogicgames com nightlies docs api com badlogic gdx graphics glutils FrameBuffer htmllibgdx
  • 二进制到十进制转换 C 代码 - 满足特定测试用例的问题

    C程序将输入的二进制数转换为十进制数 该代码对于输入 10001000 101100 工作正常 输出分别为 136 和 44 但对于以下情况则失败 My code include
  • Cloud Firestore - 动态查询

    我有一个Collection在 Cloud Firestore 中有一定数量的项目 我们称之为Collection X 这个项目数量会不断变化 在任何给定时间 我想听一下此中的项目数Collection并创建几个whereEqualto 调
  • 在 python 中创建接口和可交换实现

    是否可以在 python 中创建一个类接口以及该接口的各种实现 示例 我想创建一个用于 pop3 访问的类 以及所有方法等 如果我使用商业组件 我想将其包装以遵守合同 将来 如果我想使用另一个组件或编写自己的代码 我希望能够交换组件而不是让
  • Jarsigner:找不到证书链

    我已将证书导入到私有证书中 keystore file keytool list Enter keystore password Keystore type JKS Keystore provider SUN Your keystore c
  • 无法安排 azure webjob

    我无法将计划的 WebJob 发布到 Azure 应用服务 我正在使用 Visual Studio 2017 使用此设置一切正常 架构 http schemastore org schemas json webjob publish set
  • 如何设置 Silverlight 4 OOB 应用程序的最小宽度和高度?

    有没有办法为我的 Silverlight 4 浏览器外应用程序设置最小宽度和高度 没有内置设置来控制窗口的最小宽度和高度 因此您需要使用代码来处理它 首先 您的 OOB 应用程序需要具有更高的信任度 然后您需要附加一个处理程序SizeCha
  • 如何在Prolog中编写cmp_list/3函数?

    Write a predicate cmp list 3 the first 2 arguments are 2 lists and the last one is Comparison which means ge lt le or gt
  • 为什么 [CSS 功能] 在 [浏览器] 中不起作用,但在其他浏览器中起作用?

    我尝试使用transition在 Firefox 15 上 它不起作用 即使它可以在其他版本的 Firefox 以及 Chrome 和 Safari 等其他浏览器上运行 当我使用 Firefox 的检查器查看属性时transition被删除
  • 如何禁用 Silverlight DataGrid 验证页脚?

    我面临以下问题 我正在使用验证摘要弹出窗口来在页面上显示错误 并且我有一个可编辑的 DataGrid 所以有2个问题 1 如果 DataGrid 单元格中出现验证错误 则 DataGrid 验证会重复验证错误 例如 DataGrid 包含
  • 使用Rvest登录网站抓取时出现403错误

    我试图在需要登录的网站上抓取页面 但不断收到 403 错误 我已经修改了我网站的这两篇文章中的代码 使用rvest或httr登录网页上的非标准表单 https stackoverflow com questions 28418770 usi
  • 获取 Sublime Text 3 上的所有范围名称

    我正在创建一个插件ST3 http www sublimetext com 并需要所有定义范围的列表 我知道打ctrl alt shift p在状态栏中显示当前范围 但我无法对每个文件扩展名执行此操作 Edit 除了简单的 tmLangua
  • 使用反向路径的 CGContextClip()

    我想在我的作品上剪下图画CGContext但我需要它只是相反 即我想使用添加几个矩形到我的剪切路径CGContextAddRect 并且剪切应该以这样的方式完成 我添加到剪切路径的所有矩形都不受任何绘图操作的影响 通常情况下 情况正好相反
  • 处理 Flask url 创建中的空格

    在我正在开发的 Flask 应用程序中 我使用美国州名作为 url 结构的一部分 州名称是从 python 字典中提取的 该字典将州缩写与其各自的专有名称链接起来 例如 state dict Alabama AL Alaska AK 当状态
  • 使用 Binder 从 Native cpp 应用程序中捆绑 Intent

    我正在尝试从本机 cpp 代码调用意图 基本上 根据我的理解 我必须编写一个 Parcel 来匹配 Frameworks base core java android app ActivityManagerNative java 中的确切反
  • javascript中的指针和数组类[重复]

    这个问题在这里已经有答案了 有什么办法可以通过使用指针来缩短这段代码吗 我需要创建一个与给定数组类 unshift shift push 和 pop 具有基本相同功能但名称不同的类 var makeDeque function var a
  • ui-select 多重选择显示选项的速度非常慢

    我遇到了这个问题 我不知道如何解决 我用过一个ui select 多选 https github com angular ui ui select在我的页面中 首先 向获取数据的 url 发出 http get 请求 然后填充 ui sel
  • 我如何定义已检查整数的列表

    我有一个整数列表定义为List