2012-02-28 51 views
4

這的數目不詳的方法是我的代碼:如何建立使用參數EN C#

private static string AddURISlash(string remotePath) 
    { 
     if (remotePath.LastIndexOf("/") != remotePath.Length - 1) 
     { 
      remotePath += "/"; 
     } 
     return remotePath; 
    } 

但我需要這樣的東西

AddURISlash("http://foo", "bar", "baz/", "qux", "etc/"); 

如果我沒有記錯,是的String.Format像不知何故那...

String.Format("{0}.{1}.{2}.{3} at {4}", 255, 255, 255, 0, "4 p.m."); 

在C#中有什麼東西允許我這樣做嗎?

我知道我可以做

private static string AddURISlash(string[] remotePath) 

,但是這不是想法。

如果這在某些框架中可以完成,而在其他框架中則不需要指定以及如何解決它。

在此先感謝

+1

http://msdn.microsoft.com/en-us/library/w5zay9db%28v=vs.100%29.aspx – 2012-02-28 18:42:53

回答

5

您可以使用參數,可以它可以讓你指定的任何參數量

private static string AddURISlash(params string[] remotePaths) 
{ 
    foreach (string path in remotePaths) 
    { 
     //do something with path 
    } 
} 

注意params會影響你的代碼的性能,所以要謹慎使用它。

+0

這會允許我寫入格式(數組和參數)還是應該重載? params關鍵字是否存在於1.1中? – apacay 2012-02-28 18:51:24

+0

你應該可以在1.1中使用params而沒有任何問題。 :) – Msonic 2012-02-28 18:56:23

+0

@Msonic「不是字符串數組」 - >調用AddURISlash(new string [] {「foo」,「bar」,「baz」});'對此簽名有效 – Firo 2012-02-29 10:45:46

6

我想你想要一個parameter array

private static string CreateUriFromSegments(params string[] segments) 

然後你實現它知道remotePath只是一個數組,但你可以電話它:

string x = CreateUriFromSegments("http://foo.bar", "x", "y/", "z"); 

(正如在評論中指出的那樣,米陣列只能出現在聲明的最後一個參數。)

+0

提及它必須是方法簽名中的最後一個參數也很重要。 – ntziolis 2012-02-28 18:42:59

+0

這會允許我寫兩種格式還是應該超載? params關鍵字是否存在於1.1中? CreateUriFromSegments和UriFromSegments的意思是相同的功能? – apacay 2012-02-28 18:46:48

+0

@apacay你爲什麼使用1.1? – 2012-02-28 18:51:05

3

嘗試

private static string AddURISlash(params string[] remotePath) 

這將允許你通過一個string[]多項獨立的參數。

3

這可能是你要找的內容(注意params關鍵字):

private static string AddURISlash(params string[] remotePath) { 
    // ... 
}