2012-02-28 13 views
4

這來自該另一問題: (How to build a method with unspecified amount of params en C#)。 但因爲它是一個不同的問題,我不得不在這裏問吧方法:PARAMS串[]帶有一個參數和單串

假設你有一個方法重載(此重載是由編譯器允許):

private static string AddURISlash(params string[] remotePaths) //multiple strings 
private static string AddURISlash(string remotePaths) //single string 

你怎麼知道這將只有當執行一個參數是否已收到?

有沒有約定?或者你必須測試一次? 我是否必須假設,由於單個字符串要執行的方法的唯一方法是以接收單個字符串,那是明確執行的那個?

感謝

+0

爲什麼甚至有第二個選擇?除非語義不同,否則在這種情況下,最好將它們命名爲不同的名稱。 – leppie 2012-02-28 19:42:53

回答

8

如何,你應該知道,當只有一個參數,收到將被執行?

您閱讀說明書,這也解釋了重載決策是如何處理的。從節7.5.3.2中,相關項目符號點是:

否則,如果M P是適用在其正常形式和M Q具有參數數組和僅在其膨脹形式是適用的,則中號 P小於M Q更好。

因此,這要求參數陣列擴展(您的單個串版本)的版本被選擇在編譯時間而不是參數數組版本。

相關問題