C# 使用自定义的泛型函数/方法对泛型数组进行四则运算

例如,使用自定义的泛型方法求解泛型数组的和的问题。泛型的类型参数就是简单的int、float、double.C#中应该不支持直接在泛型参数调用算术运算。希望能够有代码说明... 例如,使用自定义的泛型方法求解泛型数组的和的问题。泛型的类型参数就是简单的int、float、double.C#中应该不支持直接在泛型参数调用算术运算。希望能够有代码说明 展开
 我来答
斯内科Snake
2014-01-15 · TA获得超过523个赞
知道小有建树答主
回答量:707
采纳率:50%
帮助的人:244万
展开全部

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类型的 结果一直无法实现
阳光的雷咩咩
2014-01-16 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:7831万
展开全部
        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());
                    }
            }
        }
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2018-01-17
展开全部
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();
        }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
癯月笑浮生
2017-12-14 · TA获得超过2795个赞
知道小有建树答主
回答量:2657
采纳率:76%
帮助的人:448万
展开全部
dynamic动态类型
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式