这个问题在这里已有答案:
12360
2018-03-20 11:27
起源
如果编译器告诉你你不能,那么究竟是什么问题?为什么你不能? - Tim Rogers
@TimRogers,是的我问为什么我们不能? - Brij
怎么知道你打算叫哪一个? - Daniel Powell
有些编程语言允许使用这类东西而且使用起来非常糟糕。要感谢C#编译器阻止你采用不良做法。 - Adrian Thompson Phillips
答案:
这是编译器错误,因为如果名称可能相同会导致混淆。在某些情况下可能会导致歧义 - 例如,在使用Action委托等时,方法不需要括号,以及使用时 var
。
14
2018-03-20 11:30
编译器可以愉快地区分重载方法 Set_IsMandatory(bool value) 和 Set_IsMandatory(string value),如果属性只是 getter和setter方法的语法糖 那么只要结果签名不同,允许方法和属性共享同一个名称似乎是合理的吗?我没有看到你提到的“混乱”,或许你可以考虑扩大你的答案以帮助我理解? - Ben
@Ben考虑一个属性, P 返回一个带有一个参数的方法的委托。现在考虑在同一个类中使用一个名为的方法 P 这需要一个相同类型的参数。如果你要写 instance.P(x) 你是否在调用这个方法是不明确的 P 或通过酒店致电代表 P。 - Matthew Watson
为了简单回答,这是不允许的。成员(字段,属性和方法)必须是 独特。
0
2018-03-20 11:32