日期:2014-05-17  浏览次数:20907 次

对于int型数组能重载运算符吗?
能的话,A类写了  A类里面就能实现两个数组相加吗?

有个错误是二元运算符的参数之一必须是包含类型

------解决方案--------------------
好像是只能在自己写的类里面写重载吧,所以请参考如下示例:
把 int[] 用其他的类包装一下再计算。
public class iii
{
    public static implicit operator int(iii x)
    {
        return 0;
    }
    public static implicit operator iii(int x)
    {
        return null;
    }
    public static int operator +(int aa, iii bb)    
    {
        return 0;
    }
}

------解决方案--------------------
public class IntArray
{
    public static implicit operator int[](IntArray x)
    {
        return x.data;
    }
    public static implicit operator IntArray(int[] data)
    {
        return new IntArray(data);
    }
    int[] data;
    public IntArray(int[] data) { this.data = data; }

    /// <summary>
    /// 两个int型数组相加
    /// </summary>
    /// <param name="arr1"></param>
    /// <param name="arr2"></param>
    /// <returns></returns>
    public static IntArray operator +(int[] arr1, IntArray arr)
    {
        //int[] arr1 = arr;
        int[] arr2 = arr;
        for (int i = 0; i < arr2.Length; i++)
        {
            arr1[i] += arr2[i];
            if (arr1[i] > 9)
            {
          &