在不同类型的参数的情况下的函数定义?

时间:2013-01-18 12:05:24

标签: c#

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

6 个答案:

答案 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;

    }