我正在编写一个简单的程序,其中我定义了一个接受某种类型参数的函数,现在我得到的新要求有相同的程序要完成,我已经在之前的函数中编写过,但这次它应该在不同类型的论据。我无法为两种不同类型的论据直接调用相同的函数。所以我的问题是我应该如何修改我的函数以使其行为。我希望这是可能的。我想要一些东西,我有Sum(int 1,int j)
现在这样的函数我想对double
类型参数使用相同的函数。
问问题
284 次
8 回答
2
简单的泛型
T Sum<T>(T i,T j) { ... }
但是,您将无法做i+j
任何事情,所以这取决于。
于 2013-01-18T12:07:26.140 回答
2
这称为重载。您可以做的只是编写两个函数:
public double Sum(int 1, int j)
public double Sum(double 1, double j)
您的程序将根据您传递给它的参数调用适当的程序。
于 2013-01-18T12:08:15.640 回答
2
为什么不定义一个以 double 作为参数类型的方法,然后您也可以为整数值调用它。
private double Sum(double a, double b)
{
return a+b;
}
后来你可以这样称呼它:
int a = 1;
int b = 2;
int Sum = (int) Sum(a,b);
由于可以将整数传递给双精度类型参数。但是,如果您的方法涉及复杂的计算,那么您最好使用不同类型的 Sum 方法的多个重载。
于 2013-01-18T12:11:17.140 回答
1
您声明一个具有相同数量但类型不同的参数的新方法。
public Int32 Sum(Int32 i, Int32 j)
{
return i + j;
}
public Double Sum(Double i, Double j)
{
return i + j;
}
于 2013-01-18T12:06:57.117 回答
1
在 .NET 中,没有包含不同数字类型的类型。因此,您需要同一方法的两个重载,一个带int
参数,一个带double
参数。
于 2013-01-18T12:07:59.307 回答
0
所以你有一个带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
于 2013-01-18T12:08:21.040 回答
0
您可以为不同的数据类型编写通用方法。检查此链接 更多地查看此链接。它展示了如何创建一个可以处理多种数据类型的函数。
于 2013-01-18T12:09:38.193 回答
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;
}
于 2013-01-18T12:29:35.563 回答