为什么在 Compare 方法的实现中必须包含接口的名称
本文关键字:包含 接口 Compare 方法 实现 为什么 | 更新日期: 2023-09-27 18:36:19
为什么代码:
class Person {
public int Age { get; set; }
public String Name { get; set; }
private class SortByName : IComparer<Person> {
int Compare(Person o1, Person o2) {//error
return 0;
}
};
public static IComparer SortByName() {
return (IComparer)new SortByName();
}
public override string ToString() {
return Name + " " + Age;
}
}
我必须明确写:
int IComparer<Person>.Compare(Person o1, Person o2)
相反,如果只是:
int Compare(Person o1, Person o2)
应该很清楚,我从IComparer
接口实现方法。
我也可以以某种方式使这段代码更短:
private class SortByName : IComparer<Person> {
int Compare(Person o1, Person o2) {//error
return 0;
}
};
public static IComparer SortByName() {
return (IComparer)new SortByName();
}
我知道在 C# 中匿名类无法实现接口,但除了 lambda 之外,还有什么方法可以缩短它吗?
如果要隐式实现接口,则必须使该方法公开。此代码应该有效:
private class SortByName : IComparer<Person>
{
public int Compare(Person o1, Person o2)
{
return 0;
}
};