C#接口不能包含运算符

Jak*_*ake 34 c# static-methods interface operators

任何人都可以解释为什么不允许C#接口包含运算符?

谢谢.

dka*_*man 54

C#运算符必须是静态的.根据定义,接口适用于实例.没有机制要求类型来实现静态方法.

  • 很抱歉恢复旧线程,但由于索引括号运算符/"property"不是静态的,因此可以在接口中使用它们. (6认同)
  • @GregKramida C#的不同之处在于,索引器在技术上不是C++中的运算符.它是语言中的语法糖,它结合到IL中的实例方法get_Item.在语法规范中,索引器和运算符是分开且不同地声明的.https://msdn.microsoft.com/en-us/library/aa664812(v=vs.71).aspx (4认同)
  • @pickles - 没有硬性和快速的理由为什么语言/编译器无法创建这样的构造(我认为实际上可能有一些东西可以做 - Delphi可能,并且它可以在某种程度上模仿(静态虚拟方法在在C++中使用模板(T :: Method())) - C#选择不这样做. (3认同)
  • 这篇文章的第二个答案有一些关于为什么 C# 没有这个的评论。http://stackoverflow.com/questions/259026/why-doesnt-c-allow-static-methods-to-implement-an-interface (2认同)
  • 感谢 @DavideCannizo 指出这在 C# 8 中发生了变化 (2认同)