2012-02-28 39 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) { 
    // ... 
}