相关疑难解决方法(0)

IComparer和IEqualityComparer接口中逆变的好处

在逆向变换的msdn页面上,我找到了一个非常有趣的例子,显示了"IComparer逆变的好处"

首先,他们使用相当奇怪的基础和派生类:

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

public class Employee : Person { }
Run Code Online (Sandbox Code Playgroud)

我已经可以说它是一个糟糕的例子,因为没有类只是继承一个基类而不至少添加一些自己的东西.

然后他们创建一个简单的IEqualityComparer类

class PersonComparer : IEqualityComparer<Person>
{
    public bool Equals(Person x, Person y)
    {            
        ..
    }
    public int GetHashCode(Person person)
    {
       ..
    }
}
Run Code Online (Sandbox Code Playgroud)

接下来是有问题的例子.

List<Employee> employees = new List<Employee> {
               new Employee() {FirstName = "Michael", LastName = "Alexander"},
               new Employee() {FirstName = "Jeff", LastName = "Price"}
            };

IEnumerable<Employee> noduplicates …
Run Code Online (Sandbox Code Playgroud)

c# contravariance c#-4.0

5
推荐指数
2
解决办法
1536
查看次数

标签 统计

c# ×1

c#-4.0 ×1

contravariance ×1