-1

我正在编写一个简单的程序,其中我定义了一个接受某种类型参数的函数,现在我得到的新要求有相同的程序要完成,我已经在之前的函数中编写过,但这次它应该在不同类型的论据。我无法为两种不同类型的论据直接调用相同的函数。所以我的问题是我应该如何修改我的函数以使其行为。我希望这是可能的。我想要一些东西,我有Sum(int 1,int j)现在这样的函数我想对double类型参数使用相同的函数。

4

8 回答 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 回答