【问题标题】:long data type on method accepts an int方法上的长数据类型接受一个 int
【发布时间】:2019-05-24 10:32:09
【问题描述】:

考虑这段代码:

static void Main()
{
    int input = 10;

    Console.WriteLine(GetResult(input));
}

static string GetResult(long input)
{
    return (input).ToString();
}

static string GetResult(int input)
{
    return (input).ToString();
}

就目前而言,Main() 方法中的代码将调用第二个GetResult(),它接受int 参数。如果我删除第二种方法,它会自动使用第一种方法,它接受long 参数。

虽然我可以理解 int 作为 Int32 将适合 long 作为 Int64,但我无法找到解释(以帮助我的好奇心)关于它在下面的工作原理引擎盖。

我应该接受它只是有效还是有人可以提供更多详细信息?

【问题讨论】:

标签: c# types int long-integer


【解决方案1】:

为此,需要阅读有关方法重载如何在语言中工作的规范。当有更具体的签名匹配方法可用时,它将被调用。在上述情况下,Int 可以隐式转换/向上转换为long,如果没有采用int 的重载,它将通过调用另一个采用long 作为输入的重载来结束。

例如:

int a  = 1;
long b = a; // compiles due to implicit conversion

另请参阅以下文档链接以查找 @Fildor 在评论中发布的 C# 中类型之间的隐式转换:

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/implicit-numeric-conversions-table

以下帖子应该有助于理解 C# 中重载解析的工作原理

https://csharpindepth.com/articles/Overloading

希望对你有帮助。

【讨论】:

  • @Fildor 确定我可以添加
猜你喜欢
  • 2014-01-24
  • 1970-01-01
  • 1970-01-01
  • 2012-05-28
  • 1970-01-01
  • 2016-09-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多