這是一般性的程序設計疑問,而不是特定的問題。但我會用一個例子來說明。假設我正在創建一個我自己的MessageBox類,並且我希望.Show()
方法可以通過說21重載來實現。我可以這樣做,如下所示。有沒有更容易的方法來創建C#中的方法的重載?
public static void Show(string x){}
public static void Show(int x){}
public static void Show(param x){}
public static void Show(param2 x){}
public static void Show(string x, param y){}
.
.
.
.
public static void Show(param x, param y){}
寫21這樣的方法變得相當麻煩。有沒有更簡單的方法來做到這一點?喜歡的東西,
public static void Show(string x, string y, int i, param p, ...... param21st z)
{
if (//see the arguments and decide)
//do stuff ignoring rest of the arguments;
else if (//passed arguments are of these type)
//then do this stuff.
else if (so and so)
// so and so.
}
注:1。 我知道有能像那豈不是讓我的單功能如此之大,它可以超過分開寫21種不同功能的尺寸參數。在我的情況下,單獨編寫是一個更大的麻煩,考慮我需要在該函數下執行的操作非常簡單(只是該函數可能需要大量參數)。而且這個問題也是要了解不同的編碼技術。 2.我瞭解我尋找的簡潔風格在我的情況下有它的缺點,它是我爲自己創造的一個愛好程序。所以對可用性無關緊要。只是我需要執行.Show()
方法,並且每個參數組合都可以通過。 (這使得編寫單獨的函數非常繁瑣)。
謝謝。
這是做到這一點的方法。如果你看看.NET的源代碼,微軟對他們的大部分API都做同樣的事情。將大量參數傳遞給單一方法是一個糟糕的主意。因爲很難弄清楚成功執行方法實際需要什麼,這是一般的維護噩夢。您可以創建一組對象來充當參數構建器(對於缺少更好的術語),以適用於傳遞不同值的不同情況。 –
@Sergey Akopov是的,我完全理解這一點。感謝那。就我而言,它是爲我自己創造的一個愛好程序。所以對可用性無關緊要。我對實施更感興趣。我不明白你的評論的第二部分。可能是我應該看代碼.. – nawfal
可用性在您爲愛好程序編寫的代碼中仍然很重要 - 如果您在幾個月或幾年後回到代碼中,該怎麼辦? –