我有两种方法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;
}
}
答案 0 :(得分:1)
你的假设是真的。只要两个数字都适合int
,就会调用第二个方法。第二个参数被隐含地转换为long
(http://msdn.microsoft.com/en-us/library/y5b434w4.aspx)以匹配签名。
您还可以强制将第一种方法用于较小的数字:
Add((long)2, 3);
或
Add(2L, 3);