我有以下代码:
public T[] Plus<T>(T[] a, T[] b, int size)
{
T[] sum = new T[size];
for (int i = 0; i < size; i++)
{
sum[i] = a[i] + b[i];
}
return sum;
}
但它不起作用。如何计算“ a”和“ b”数组?
PST
可能只sbyte
int
uint
long
ulong
对不起我的英语不好。
这是一种可怕的方法,但是至少可以起作用:
for (int i = 0; i < size; i++)
{
sum[i] = (dynamic)a[i] + (dynamic)b[i];
}
但是,它确实进行了很多装箱和拆箱。如果您想要更好的版本,则可以通过重载来做得更好:
public static int[] Plus(int[] a, int[] b, int size)
{
int[] sum = new int[size];
for (int i = 0; i < size; i++)
{
sum[i] = a[i] + b[i];
}
return sum;
}
public static long[] Plus(long[] a, long[] b, int size)
{
long[] sum = new long[size];
for (int i = 0; i < size; i++)
{
sum[i] = a[i] + b[i];
}
return sum;
}
您还可以修改通用版本:
public static T[] Plus<T>(T[] a, T[] b, int size)
{
switch(Type.GetTypeCode(typeof(T)))
{
case TypeCode.Int32:
return (T[])(object)Plus((int[])(object)a, (int[])(object)b, size);
case TypeCode.Int64:
return (T[])(object)Plus((long[])(object)a, (long[])(object)b, size);
// ...etc
default:
throw new NotSupportedException();
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句