【发布时间】:2009-12-30 03:22:38
【问题描述】:
最近我开始制作一个物品容器,每次用户尝试将物品添加到容器中。如果以某种方式存在相同的项目类型,它会将它们堆叠在一起,但有一个限制,即 int.MaxValue 如果我尝试过:
if (2147483647 + 2147483647 > int.MaxValue)
这会给我以下错误:
The operation overflows at compile time in checked mode
所以我尝试像这样使用未选中的关键字:
unchecked
{
if (2147483647 + 2147483647 > int.MaxValue)
{
}
}
但这根本没有显示触发 if 语句(我猜它是包裹在逻辑与运算符周围的?)
还有其他方法可以做到这一点吗? (不使用 int64 等)
【问题讨论】:
-
你为什么要添加两个等于 int.MaxValue 的常量,并将它们与 int.MaxValue 进行比较?
-
@GregS,这只是一个例子。
-
确切的问题是什么,当然有两个 int.MaxValues 大于 int.MaxValue。
-
您是否担心这一点,以防有人将超过 20 亿个相同类型的项目添加到您的列表中?这真的会发生吗?