我有两个方法 int Add(int, int)
和 long Add(long, long)
。
当我调用此方法时,调用门根据我传递给这些方法的参数的大小进行解析。
C#编译器如何识别要调用哪个方法?
我想它会根据我们传递给该方法的参数的大小来解决。
如果参数大小适合 datatype(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;
}
}
最佳答案
你的假设是正确的。只要两个数字都适合 int,就会调用第二个方法。第二个参数隐式转换为 long
( http://msdn.microsoft.com/en-us/library/y5b434w4.aspx ) 以匹配签名。
您还可以对较小的数字强制使用第一种方法:
Add((long)2, 3);
或
Add(2L, 3);
关于c# - int 和 long 类型的方法重载,哪个方法将被调用以及何时调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27458883/