none
关于扩展方法的问题 RRS feed

  • 问题

  • 在C#语言中,如果我要对double,float.....的所有数值类型扩展方法,类似

    static T Add(this T op1, params T[] ops){

    }

    如何实现?必须对每个类型单独实现?

    进一步,是否可以重载operator+运算符?

    2019年5月8日 2:02

全部回复

  • 首先在扩展方法中不可以自定义运算符

    在对数值类型进行扩展方法

    数值是struct类型,可以利用泛型来约束,或者直接将扩展类型改为object 也是可以的

    按照你的模式我瞎写了一个

    dynamic是神奇的语法糖

       public static T testAdd<T>(this T O, params T[] list) where T: struct
            {
                 dynamic s = O;

                foreach (dynamic item in list)
                    s += item;

                var Result = default(T);

                Result = s;

                return Result; }


    或者干脆判断泛型的类型之后进行强制转换


    • 已编辑 ARM830 2019年5月8日 4:13
    2019年5月8日 3:52