爲什麼代碼:爲什麼在比較方法的實現中必須包含接口的名稱?
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#匿名類無法實現的接口,但除了有任何拉姆達方式把它縮短?
你忘了讓你的方法'公共'嗎?如果你這樣做,快速刪除這個問題可能是一個好主意:-) – dasblinkenlight