[英]long data type on method accepts an int
考慮以下代碼:
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
參數。
雖然我可以理解,作為Int32
的int
可以和Int64
一樣long
,但是我無法找到一個解釋(以幫助我好奇)如何在引擎蓋下工作。
我應該接受它是否可以正常工作,還是可以提供更多詳細信息?
為此,需要閱讀有關語言中方法重載如何工作的規范。 當有更多特定的簽名匹配方法可用時,它將被調用。 在上述情況下,由於Int
可以隱式轉換/轉換為long
,如果不存在采用int
重載,則它將通過調用另一個花費long
作為輸入的重載來結束。
例如:
int a = 1;
long b = a; // compiles due to implicit conversion
另請參閱以下文檔鏈接,以查找@Fildor發表在評論中的C#類型之間的隱式轉換:
以下文章應有助於理解C#中的重載解析如何工作
https://csharpindepth.com/articles/Overloading
希望能幫助到你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.