【发布时间】:2016-05-10 02:17:51
【问题描述】:
由于某种原因,我潜入了 Double 类的 .NET Framework 源代码,发现 == 的声明是:
public static bool operator ==(Double left, Double right) {
return left == right;
}
同样的逻辑适用于每个运算符。
- 这样定义的意义何在?
- 它是如何工作的?
- 为什么不创建无限递归?
【问题讨论】:
-
我希望无限递归。
-
我很确定它不会在任何地方与 double 进行比较,而是在 IL 中发出
ceq。这只是为了填写一些文档目的,但找不到来源。 -
大概率这样可以通过Reflection得到这个算子。
-
这永远不会被调用,编译器已经在(ceq opcode)中烘焙了相等逻辑,请参阅When is Double's == operator invoked?
-
@ZoharPeled 将双精度数除以零是有效的,将导致正无穷大或负无穷大。
标签: c# .net language-lawyer