C#能不能把对不同数据类型的相同操作,写成一个函数处理

我要对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;}

这四个函数写成一个函数?
因为实际操作很复杂,分开写很麻烦,而且都是一样的运算
请教一下
泛型的 return a+1是要报错的

第1个回答  2008-08-27
可以啊,你写一个public double AddOne(double a) {return a+1} 函数就可以了,因他类型的参数都可以隐式的转化为double类型,所以不必要全部都写,写这个一个就可以身边调用了
第2个回答  2008-08-27
楼上的办法是可以的,但是你学C#的时候没有人告诉你尽量不要使用object作为参数吗,这样写会让程序效率很低。这个办法有专门的解决办法,可以用泛型

public class aaa<T>
{
public T AddOne(T a) {return a+1;}
}
用的时候:
aaa<int> a = new aaa<int>();
a.AddOne(xxx)就可以了。
第3个回答  2008-08-27
static object AddOne(object obj)
{
try
{
double a = Convert.ToDouble(obj);
a += 1;
return a;
}
catch
{
return obj;
}
}

使用

int a1 = 1;
double b = 3;
decimal c = 5;
a1 =Convert.ToInt32( Program.AddOne(a1));
c = Convert.ToDecimal(Program.AddOne(c));
b = Convert.ToDouble(Program.AddOne(b));

注定一点~参数必须有一个共通性~
比如这里int 和double和decimal类型是可以互相转换的
但注意一点就是三个类型的长度不一样,超出的话会返回本身本回答被提问者采纳
第4个回答  2008-08-28
泛型的好处就体现在这了`~~

return 的时候用Convert.相应的类型(a+1)
第5个回答  2008-08-27
可以。