c# - 泛型类中类型化对象的比较

标签 c# generics types

<分区>

给出了以下代码,我只想比较泛型类中的两个对象。

public bool Compare<T>()
    {
        T var1 = default(T);
        T var2 = default(T);        
        return var1 == var2;
        //Error CS0019  Operator '==' cannot be applied to operands of type 'T' and 'T'
    }

谁能解释为什么不能比较这个泛型类中的这两个对象?

最佳答案

类型 T 不一定是引用类型,T 是类型参数,可以是类或结构,因此编译器将无法做出该假设。

你可以这样做

public bool Compare<T>()
{           
        T var1 = default(T);
        T var2 = default(T);

        return !EqualityComparer<T>.Default.Equals(var1, var2);
}

您也可以尝试制作 T IComparable<T> 否则你可以尝试使用 IComparer<T> 到你的类(class)。

关于c# - 泛型类中类型化对象的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36449655/

相关文章:

c# - 打印机连接事件

c# - 如何在具有单行ListView 的移动屏幕上快速显示附加数据?

c# - 何时何地使用 GetType() 或 typeof()?

java - 在嵌套枚举实现接口(interface)中继承泛型类型

Java 泛型通配符扩展

c# - 在 PowerShell 中调用通用静态方法

c# - c# - 如何从与C#中的System不同的命名空间获取类型?

c# - 从不同 dll 中的字符串值表示中获取泛型类型

c# - 为什么 Moq 抛出 "expected Invocation on the mock at least once"。在哪里设置一次,即使它被设置为空?

PHP:为什么零长度字符串上的数组语法将字符串转换为数组?