首页 > 解决方案 > 用作泛型参数时调用双“==”运算符

问题描述

有什么方法可以获取通用参数的双“==”运算符?请注意,.Equals 并非在所有情况下都能正常工作。

鉴于:

bool MyMethod<T>(T left, T right)
{
   return EqualityComparer.Default.Equals(left,right);
}

然后:

double a = double.NaN;
double b = double.NaN;
a == b; //returns false
MyMethod(a,b); //returns true

我想获得所有类型 T 的实际“==”运算符。这可能吗?

我已阅读不能将运算符 == 应用于 C# 中的泛型类型?并且它没有解决我的情况,因为最佳答案建议使用 EqualityComparer.Default 但是在比较两个 double.NaN 值时不会返回数学上正确的值。

标签: c#generics

解决方案


推荐阅读