对于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)
{
int sign = i;
do
{
arr1[sign + 1] += arr1[sign] / 10;
arr1[sign] = arr1[sign] % 10;
sign += 1;
} while (arr1[sign] > 9);
}
}
return arr1;
}
}