【问题标题】:.NET interface/constraint for object that implements certain operators实现某些运算符的对象的 .NET 接口/约束
【发布时间】:2013-02-06 08:51:38
【问题描述】:

我正在制作一个泛型方法,想知道是否有某种方法可以为泛型类型T 添加约束,这样T 就有一个特定的运算符,如+、+=、-、-=、等等

public void TestAdd<T>(T t1, T t2)
{
    return t1 + t2;
}

产生以下错误文本:

Operator '+' cannot be applied to operands of type 'T' and 'T'

我在 Google/SO 上搜索了一段时间,并没有真正找到任何相关内容。

【问题讨论】:

标签: c# .net generics operators operator-overloading


【解决方案1】:

我认为这是不可能的

你可以不那么花哨:

interface IAddable { void Add(object item); }
...
public void TestAdd<T>(T t1, T t2) where T : IAddable
{
   return t1.Add(t2);
}

【讨论】:

  • 我猜他正在尝试支持 int、double、decimal 等内置类型。这些都不会实现您的自定义接口。
  • 是的,试图避免自定义界面,并查看是否有基于对象运算符的约束的本机支持。
  • 是的,我知道,恐怕不支持,这是我能想到的最接近的替代方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-13
  • 1970-01-01
  • 1970-01-01
  • 2021-02-11
相关资源
最近更新 更多