2013-03-04 81 views
1

之間我在採訪中得到了這個問題,現在我知道我給了錯誤的答案。 這個程序爲什麼在函數之間顯示模糊的調用,因此無法編譯?曖昧通話功能錯誤

public static void Display(int? num) { 
    Console.WriteLine(num); 
} 

public static void Display(string num) { 
    Console.WriteLine(num); 
} 

static void Main() { 
    Display(1); 
    Display("1"); 
    Display(null); 

    Console.ReadLine(); 
} 

回答

7

本聲明Display(null);可以被解釋爲Display(nullable int with null value)Display(string with null value)。因此模糊的通話錯誤。

+6

爲了給這個錯誤不僅做到有必須要多適用的方法,也必須是*沒有最好的方法*。既然不是int?字符串顯然比另一個字符串「更好」,這些方法是不明確的。如果它是對象和字符串,那麼字符串會更好,因爲它比對象更具體。 – 2013-03-04 06:22:10