C# 使用自定义的泛型函数/方法对泛型数组进行四则运算
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 使用自定义的泛型函数/方法对泛型数组进行四则运算相关的知识,希望对你有一定的参考价值。
例如,使用自定义的泛型方法求解泛型数组的和的问题。泛型的类型参数就是简单的int、float、double.C#中应该不支持直接在泛型参数调用算术运算。希望能够有代码说明
static void GetSum<T>(T[] a)
if (a == null)
Console.WriteLine("无意义");
return;
if (a is int[])
int sum = 0;
for (int i = 0; i < a.Length; i++)
sum += Convert.ToInt32(a[i]);
Console.WriteLine(sum);
else if (a is double[])
double sum = 0;
for (int i = 0; i < a.Length; i++)
sum += Convert.ToDouble(a[i]);
Console.WriteLine(sum);
else if (a is float[])
float sum = 0;
for (int i = 0; i < a.Length; i++)
sum += Convert.ToSingle(a[i]);
Console.WriteLine(sum);
int[] a = 1, 2, 3, 4 ;
GetSum<int>(a);
//本来是想返回T类型的 结果一直无法实现 参考技术A static void Main(string[] args)
Console.WriteLine(sum<int>(1, 2));
Console.ReadLine();
public static T sum<T>(T a, T b) where T : struct
string ts = typeof(T).ToString();
switch (ts.Substring(ts.LastIndexOf(".") + 1))
case "Int32"://示例,只写了整数
int sum = Convert.ToInt32(a) + Convert.ToInt32(b);
return (T)Convert.ChangeType(sum, typeof(T));
default://只是为了防止编译错误
return (T)(new object());
本回答被提问者和网友采纳 参考技术B static T Sum<T>(params T[] arrays) where T : struct
if (arrays.Length > 0)
dynamic sum = default(T);
foreach (T memb in arrays)
sum += memb;
return sum;
else
throw new System.IndexOutOfRangeException();
参考技术C dynamic动态类型
以上是关于C# 使用自定义的泛型函数/方法对泛型数组进行四则运算的主要内容,如果未能解决你的问题,请参考以下文章
C# 泛型方法约束为继承自某类时,调用方法,传子类实参,为什么报错?应该怎么写