我在深入阅读 C# 时遇到了这个我能理解的内容:
当它被限制为引用类型时,执行的比较类型完全取决于类型参数被限制为什么。
但是不能理解这个:
如果进一步限制派生自重载 == 和 != 运算符的特定类型,则使用这些重载。
如果有人能通过示例来解释这一点,我将不胜感激...... Plzz
==
Và !=
是相等和非相等运算符。
这些可以被不同的类型覆盖 - 在覆盖了它们的类型中,如果用作通用类型约束,则此实现将用于使用这些运算符的比较。
对于您的示例,该行不适用,因为您没有对覆盖 ==
的类型的额外约束:
static bool AreReferencesEqual (T first, T second) where T : class
{
return first==second;
}
如果您有这样的类型(也可以继承),那么:
nếu như T
被约束到的类型没有重载 ==
,一个简单的引用相等性测试将被完成(默认的 Object
实现)。
但是,如果类型确实重载了 ==
(比如一个业务实体,如果两个实例具有相同的 nhận dạng
,则它们被认为是相同的),将使用该实现,无论您是传入该类型还是继承类型。
考虑一个覆盖==
củaPerson
类。以及一种将类型参数限制为 Person
的方法。如果您有一个 Employee
派生自 Person
并且还覆盖了 ==
,当在通用中使用 ==
时方法,使用的 ==
将是 Person
一个。
Tôi là một lập trình viên xuất sắc, rất giỏi!