相关疑难解决方法(0)

Double的"=="运算符的定义

出于某种原因,我偷偷进入了该类的.NET Framework源代码,Double并发现声明==是:

public static bool operator ==(Double left, Double right) {
    return left == right;
}
Run Code Online (Sandbox Code Playgroud)

每个操作员都适用相同的逻辑.


  • 这样的定义有什么意义?
  • 它是如何工作的?
  • 为什么不创建无限递归?

.net c# language-lawyer

125
推荐指数
4
解决办法
4904
查看次数

比较Double.NaN与自身

我很难找到为什么这两个操作返回不同的值:

  1. Double.NaN == Double.NaN 回报 false
  2. Double.NaN.Equals(Double.NaN) 回报 true

我有第一部分但不是第二部分的答案而不是"为什么这两个比较返回不同的值"

.net c# double nan

38
推荐指数
2
解决办法
2381
查看次数

用户定义的结构是否继承了重载的==运算符?

如果引用类型不重载相等运算符==,则将使用内置相等运算符on Object.为什么用户定义不一样structs:

struct A{ }

static void Main(string[] args)
{
    A a = new A();
    A a1 = new A();
    bool equal= (a == a1); //error
} 
Run Code Online (Sandbox Code Playgroud)

即,是否ValueType(所有structs派生的)也是过载运==算符?

.net c# struct operator-overloading

2
推荐指数
1
解决办法
1157
查看次数

标签 统计

.net ×3

c# ×3

double ×1

language-lawyer ×1

nan ×1

operator-overloading ×1

struct ×1