【问题标题】:How to create interface with overloaded arithhmetic operators in C#? [duplicate]如何在 C# 中使用重载算术运算符创建接口? [复制]
【发布时间】:2014-02-25 13:14:04
【问题描述】:

像这样使用它:

public class myClass <T> where T : IArithmetic
//...
public myFunction(T A, T B){
    //...
    X = A + B;
    //...
}

所以,我必须以某种方式为 T 类重载 + 运算符。

【问题讨论】:

  • 谢谢,James Guant,正在阅读。
  • 不能用泛型来做到这一点......这真是太糟糕了。我一直希望 .NET 提供这种功能。

标签: c# generics


【解决方案1】:

这不可能为实现运算符创建接口。

根据标准:

13.2 接口成员

接口的成员必须是方法、属性、事件或索引器。一个 接口不能包含常量、字段、运算符、实例 构造函数、析构函数或类型,接口也不能包含 任何类型的静态成员

【讨论】:

    【解决方案2】:

    无法创建此限制,因为运算符方法是静态的,因此它们不属于实例。 如果 T 类型不支持所需的操作,您可以使用 reflxion 进行一些运行时检查并抛出 NotSupported 异常。

    【讨论】:

      猜你喜欢
      • 2020-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-10
      相关资源
      最近更新 更多