C# 实现某些运算符的对象的.NET接口/约束

C# 实现某些运算符的对象的.NET接口/约束,c#,.net,generics,operators,operator-overloading,C#,.net,Generics,Operators,Operator Overloading,我正在创建一个泛型方法,想知道是否有某种方法可以将约束添加到泛型类型T,这样T就有一个特定的操作符,比如+、+=、-、-=,等等 public void TestAdd<T>(T t1, T t2) { return t1 + t2; } 我在Google/SO上搜索了一段时间,没有找到任何相关信息。我认为这是不可能的 您可以通过以下方式来实现: interface IAddable { void Add(object item); } ... public void Te

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

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

我在Google/SO上搜索了一段时间,没有找到任何相关信息。

我认为这是不可能的

您可以通过以下方式来实现:

interface IAddable { void Add(object item); }
...
public void TestAdd<T>(T t1, T t2) where T : IAddable
{
   return t1.Add(t2);
}
接口IAddable{void Add(对象项);}
...
公共无效测试DD(T t1,T t2),其中T:IAddable
{
返回t1.Add(t2);
}

请参阅:这可能有助于重复感谢lazyberezovsky的说法,因为它回答了这个问题。不幸的是,它不受支持。没有接近他的动态解决方案。我猜他正在尝试支持内置类型,如int、double、decimal等。这些类型都无法实现您的自定义接口。是的,他试图避免自定义接口,并查看是否有基于对象运算符的本机约束支持。是的,我知道,恐怕这不受支持,这是我能想到的最接近的替代方案
interface IAddable { void Add(object item); }
...
public void TestAdd<T>(T t1, T t2) where T : IAddable
{
   return t1.Add(t2);
}