我要对int float double uint几种数据类型做相同的运算,能不能写成一个函数 
比如 
public int AddOne(int a) {return a+1;} 
public float AddOne(float a) {return a+1;} 
public double AddOne(double a) {return a+1} 
public uint AddOne(uint a) {return a+1;} 这四个函数写成一个函数? 
因为实际操作很复杂,分开写很麻烦,而且都是一样的运算 
请教一下

解决方案 »

  1.   

    简单一点 你可以用
    public object AddOne(object a,int i)
    {
    switch(i)
    {
    case 1:
    return ....;//int
    break;
    }
    }
      

  2.   

    用委托和接口。
    public interface myclasses {
    public void AddOne();
    ]
      

  3.   

    public T getValue<T>(T t)
    {
         return t;
    }
      

  4.   

    这个部分用C++/CLI写 
    事半功倍。
      

  5.   

    using namespace System;template<class T>
    class AddOne
    {
    public:
    T operator()(T v)
    {
    return v + 1;
    }
    };int main(array<System::String ^> ^args)
    {
    AddOne<int> func1;
    AddOne<float> func2; int a = func1(3);
    float b = func2(3.4);    Console::WriteLine(L"Hello World");
        return 0;
    }
      

  6.   


            public static T AddOne<T>(T a)
            {
                if (a is int)
                    return (T)((object)(Convert.ToInt32(a) + 1));
                else if (a is float)
                    return (T)((object)(Convert.ToSingle(a) + 1));
                else if(a is double)
                    return (T)((object)(Convert.ToDouble(a) + 1));
                else if(a is uint)
                    return (T)((object)(Convert.ToUInt32(a) + 1));
                return default(T);
            }
    我感觉还不如你写四个重载来的方便呢……
      

  7.   

    把所有数据转换到Double型,进行运算后,结果再转换回所需要的类型,这样可以吗?