C#规范可能会这样说,但即使我的搜索中没有显示任何内容,这也不是我正在寻找的答案。
我正在寻找可以直接调用操作符方法(如op_Addition
)或属性访问器(如get_Length
)的方案。 对C#语言的设计者来说已经足够阻止我们这样做了。(参见compiler error CS0571。)
拥有此功能有用的一个相当常见的情况是Func<T>
委托应该返回属性的值。您也不能将get访问器设置为委托的方法。有一个简单的解决方法(使用() => someObject.SomeProperty
),但是,除了开销之外,它不像someObject.get_SomeProperty
那样清晰。
我看到的一个复杂因素是,当一个类型定义了多个不同类型的转换时,这些方法将具有相同的签名和不同的返回类型,C#也不允许这样做。但那是different question。
答案 0 :(得分:1)
不确定为什么设计师(安德斯)选择不支持它,但这是我提出的一些很好的理由。
对于不知道属性getter的默认名称是get_PropertyName的初学者来说会很困惑(但如果它是标准的编译器程序集则不一定是这样)。
你可能会有一些永远不会使用约定的java-ophiles。
如果班级设计师想(并且有意义),您可以使用Add方法(如DateTime.Add
)。这是一个更友好的名字。