在不同类型参数的情况下的函数定义
本文关键字:情况下 定义 函数 类型参数 | 更新日期: 2023-09-27 17:54:05
我正在写一个简单的程序,在这个程序中我定义了一个接受某种类型参数的函数,现在我得到了新的要求,我已经在之前的函数中编写了相同的过程,但这次它应该是不同类型的参数。对于两个不同类型的参数,我不能直接调用同一个函数。我的问题是,我应该如何修改我的函数,使其表现为这样。我希望这是可能的。我想要一些东西,我有一个像Sum(int 1,int j)
的函数,现在我想对double
类型的参数使用相同的函数。
这叫做重载。您只需编写两个函数:
public double Sum(int 1, int j)
public double Sum(double 1, double j)
你的程序将根据你传递给它的参数调用合适的
Simple with泛型
T Sum<T>(T i,T j) { ... }
然而,你将无法做i+j
或任何东西,所以这取决于。
为什么不定义一个double作为参数类型的方法,以后你也可以为整数值调用它。
private double Sum(double a, double b)
{
return a+b;
}
之后你可以这样称呼它:
int a = 1;
int b = 2;
int Sum = (int) Sum(a,b);
因为整型可以传递给双类型形参。但是,如果您的方法涉及复杂的计算,那么您最好使用不同类型的Sum方法的多个重载。
在。net中没有包含不同数字类型的类型。因此,您需要对同一方法进行两个重载,一个接受int
参数,一个接受double
参数。
您声明了一个具有相同数量参数但不同类型的新方法。
public Int32 Sum(Int32 i, Int32 j)
{
return i + j;
}
public Double Sum(Double i, Double j)
{
return i + j;
}
那么你就有了一个接受int
参数的方法
public int Sum(int val1,int val2)
{
return val1 + val2;
}
现在需要一个接受doubles
:
public double Sum(double val1,double val2)
{
return val1 + val2;
}
如果你想要一个支持所有"数值"类型的泛型类,你可以看看这里:
http://www.codeproject.com/Articles/33617/Arithmetic-in-Generic-Classes-in-C您可以为不同的数据类型编写泛型方法。点击此链接看看这个链接。它展示了如何创建一个可以处理多种数据类型的函数。
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;
}