基本過載示例

此程式碼包含名為 Hello 的過載方法 :

class Example
{
    public static void Hello(int arg)
    {
        Console.WriteLine("int");
    }
 
    public static void Hello(double arg)
    {
        Console.WriteLine("double");
    }
 
    public static void Main(string[] args) 
    {
        Hello(0);
        Hello(0.0);
    }
}

主要方法被呼叫,它將列印

int
double

在編譯時,當編譯器找到方法呼叫 Hello(0) 時,它會找到名為 Hello 的所有方法。在這種情況下,它會找到其中兩個。然後它嘗試確定哪種方法更好。確定哪種方法更好的演算法很複雜,但通常歸結為儘可能少地進行隱式轉換

因此,在 Hello(0) 的情況下,方法 Hello(int) 不需要轉換,但方法 Hello(double) 需要隱式數值轉換。因此,第一種方法由編譯器選擇。

Hello(0.0) 的情況下,無法隱式地將 0.0 轉換為 int,因此 Hello(int) 的方法甚至不被考慮用於過載解析。只保留方法,因此編譯器會選擇它。