首页 > 解决方案 > 为什么 int i = 10; 我 / 0; 编译,但 5 / 0 给出 CS0020 - 除以常数零?

问题描述

考虑以下代码段:

int i = 5 / 0;

这会产生编译器错误CS0020: Division by constant zero,这很好。但是,下一个片段:

int i = 10;
i = i / 0;

编译就好了。

有人知道为什么吗?我看不出编译器为什么允许整数变量除以零整数常量。

标签: c#

解决方案


在一般情况下,编译器没有理由在运行时不允许除以零(或任何其他数字)。

但是,您的第一个示例是编译时间常数,即它由编译器计算并替换为评估结果。这就是编译器所抱怨的,因为它不知道用什么整数值代替 5/0。


推荐阅读