在我不拥有的类型上重载运算符

时间:2014-01-09 10:41:33

标签: c# .net operator-overloading

在C#中是否可以覆盖我无法控制的类型的运算符?例如。我试图覆盖数组的add运算符:

public static double[] operator +(double[] a, double[] b)
{
...
}

但它抱怨At least one parameter should be <enclosing type>。在C ++中,只需要创建一个函数......

1 个答案:

答案 0 :(得分:1)

由于double []是内置类型而您无法向其添加运算符,因此您可以创建一个包装类来执行此操作:

E.g(来自wudzik的链接):

public class Foo
{
    double[] x;

    // Legal
    public static double[] operator+(double[] x, Foo y);