为什么代码:
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之外还有什么方法可以缩短它?
答案 0 :(得分:3)
如果要隐式实现接口,则必须将方法设置为public。这段代码应该有效:
private class SortByName : IComparer<Person>
{
public int Compare(Person o1, Person o2)
{
return 0;
}
};