gpt4 book ai didi

c# - 为什么在 Compare 方法的实现中必须包含接口(interface)名称?

转载 作者:行者123 更新时间:2023-11-30 21:51:26 25 4
gpt4 key购买 nike

为什么代码:

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 接口(interface)实现了方法。

我还能以某种方式缩短这段代码:

   private class SortByName : IComparer<Person> {
int Compare(Person o1, Person o2) {//error
return 0;
}
};


public static IComparer SortByName() {
return (IComparer)new SortByName();
}

我知道在 C# 中匿名类不能实现接口(interface),但是除了 lambda 之外还有什么方法可以让它更短吗?

最佳答案

如果要隐式实现接口(interface),则必须公开该方法。此代码应该有效:

private class SortByName : IComparer<Person>
{
public int Compare(Person o1, Person o2)
{
return 0;
}
};

关于c# - 为什么在 Compare 方法的实现中必须包含接口(interface)名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35640055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com