方法重载类型为int和long,哪个方法将被调用,何时?

时间:2014-12-13 12:40:45

标签: c# asp.net .net

我有两种方法int Add(int, int)long Add(long, long)

当我调用此方法时,调用门根据我传递给这些方法的参数的大小来解决。

C#编译器如何识别要调用的方法? 我猜它会解析我们传递给方法的参数的大小。 如果参数大小适合数据类型(int),它将调用int Add(int, int),否则将调用long Add(long, long)

这是我的猜测,请遵守相同的规定并澄清对这些方法的调用是如何解决的?

class Program
{
    static void Main(string[] args)
    {
        Program p = new Program();
        p.Add(2, 3);
        p.Add(223232323777, 3);
    }

    long Add(long a, long b)
    {
        return a + b;
    }

    int Add(int a, int b)
    {
        return a + b;
    }
}

1 个答案:

答案 0 :(得分:1)

你的假设是真的。只要两个数字都适合int,就会调用第二个方法。第二个参数被隐含地转换为longhttp://msdn.microsoft.com/en-us/library/y5b434w4.aspx)以匹配签名。

您还可以强制将第一种方法用于较小的数字:

Add((long)2, 3);

Add(2L, 3);