我正在写一个简单的程序,我在其中定义了一个接受某种类型的参数的函数,现在我得到的新要求与我之前在函数中编写的程序相同,但这次应该在不同类型的参数。我无法直接调用两种不同类型参数的相同函数。所以我的问题是我应该如何修改我的功能以这种方式行事。我希望有可能。我想要一些东西,我的函数如Sum(int 1,int j)
现在我想对double
类型参数使用相同的函数。
答案 0 :(得分:2)
为什么不定义一个double参数类型的方法,以后你也可以调用它作为整数值。
private double Sum(double a, double b)
{
return a+b;
}
以后你可以这样称呼它:
int a = 1;
int b = 2;
int Sum = (int) Sum(a,b);
因为整数可以传递给double类型参数。但是如果你的方法涉及复杂的计算,那么你最好使用不同类型的Sum方法的多次重载。
答案 1 :(得分:1)
您声明了一个具有相同数量参数但类型不同的新方法。
public Int32 Sum(Int32 i, Int32 j)
{
return i + j;
}
public Double Sum(Double i, Double j)
{
return i + j;
}
答案 2 :(得分:1)
在.NET中,没有包含不同数字类型的类型。所以你需要两个相同方法的重载,一个带int
个参数,一个带double
个参数。
答案 3 :(得分:0)
所以你有一个方法需要int
个参数
public int Sum(int val1,int val2)
{
return val1 + val2;
}
现在你需要一个采用doubles
:
public double Sum(double val1,double val2)
{
return val1 + val2;
}
如果你想要一个支持所有“数字”类型的generic类,你可以看一下:
http://www.codeproject.com/Articles/33617/Arithmetic-in-Generic-Classes-in-C
答案 4 :(得分:0)
您可以为不同的数据类型编写 GENERIC METHODS 。 检查这个Link 仔细看看这个链接。它显示了如何创建一个可以处理多种数据类型的函数。
答案 5 :(得分:0)
int a = 2, b = 3;
double c = 2.345, d = 3.45;
object inta = a, intb = b;
object doublec = c, doubled = d;
Console.WriteLine(Sum(inta, intb).ToString());
Console.WriteLine(Sum(doublec, doubled).ToString());
public object Sum(object a, object b)
{
object sum = null;
if (a.GetType().ToString() == "System.Int32" && b.GetType().ToString() == "System.Int32")
{
sum = Convert.ToInt32(a.ToString()) + Convert.ToInt32(b.ToString());
}
if (a.GetType().ToString() == "System.Double" && b.GetType().ToString() == "System.Double")
{
sum = Convert.ToDouble(a.ToString()) + Convert.ToDouble(b.ToString());
}
return sum;
}