c# - int 和 long 类型的方法重载,哪个方法将被调用以及何时调用?

标签 c# asp.net .net

我有两个方法 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/

相关文章:

c# - 绑定(bind)属性在更改时不更新

asp.net - 虚拟目录中的相对路径

c# - 在 C# 中使用 MySql.data

c# - 从后面的代码向图例添加文本

c# - 服务器从客户端接收消息,如何在Active Window中将消息转换为击键?

c# - AutoMapper - 为什么使用 Map 而不是 DynamicMap?

c# - 使用计时器显示文本 3 秒?

c# - 每 24 小时执行一次 c# 函数

C# 发送 HTML 和文本电子邮件 - 最优雅?

C# 多线程 - 为什么 2 个线程调用同一个函数?