簡體   English   中英

方法上的長數據類型接受一個int

[英]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參數。

雖然我可以理解,作為Int32int可以和Int64一樣long ,但是我無法找到一個解釋(以幫助我好奇)如何在引擎蓋下工作。

我應該接受它是否可以正常工作,還是可以提供更多詳細信息?

為此,需要閱讀有關語言中方法重載如何工作的規范。 當有更多特定的簽名匹配方法可用時,它將被調用。 在上述情況下,由於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

希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM