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

本文关键字:情况下 定义 函数 类型参数 | 更新日期: 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;
    }
相关文章: