static void Main()
{
Show(null);
Show("");
Show(1);
}
static void Show(string s) { Console.WriteLine("String"); }
static void Show(object o) { Console.WriteLine("Object"); }
static void Show(Program p) { Console.WriteLine("Program"); } // Program 為目前類別
無法編譯,錯誤發生在 Show(null)。
null 同時相容於 string、Program (皆為 object 衍生類別)。string 比 object 精確,故單獨存在 Show(string)/Show(object) 時會選 string。Show(Program) 後,string 與 Program 之間無繼承關係,編譯器無法判斷哪個更精確,導致模糊錯誤 (CS0453)。Show((string)null) 或 Show((Program)null)。本系列著重淺顯解釋基礎理論,歡迎交流心得。因垃圾信過多,請透過 CSDN 好友聯繫。