c# - 为什么 int i = 10; 我 / 0; 编译,但 5 / 0 给出 CS0020 - 除以常数零?
问题描述
考虑以下代码段:
int i = 5 / 0;
这会产生编译器错误CS0020: Division by constant zero,这很好。但是,下一个片段:
int i = 10;
i = i / 0;
编译就好了。
有人知道为什么吗?我看不出编译器为什么允许整数变量除以零整数常量。
解决方案
在一般情况下,编译器没有理由在运行时不允许除以零(或任何其他数字)。
但是,您的第一个示例是编译时间常数,即它由编译器计算并替换为评估结果。这就是编译器所抱怨的,因为它不知道用什么整数值代替 5/0。
推荐阅读
- react-native - React Native View 不显示任何内容
- php - 如何使用 Symfony 4 中的事件处理异常?
- javascript - this.map.set(key,value) 函数在 angualr 6 typescript 2.9.2 中不起作用
- html - Booststrap 表插入模数后断裂
- django - Django:无法创建通用外键对象
- jquery - 如何在悬停时为 input[type="submit"] 的“值”设置动画?
- javascript - 在 Traccar 应用程序中更改或添加元素
- c - 错误“表达式必须具有恒定值”
- php - Guzzle:魔术请求方法需要一个 URI 和可选的选项数组
- c# - Is it possible to get index of selected items in DataGridViewCheckBoxColumn?