这些空数组String.Split方法调用有什么区别?

时间:2012-10-16 05:26:19

标签: c# string refactoring split

这两行代码之间有什么区别吗?

1)someString.Split(new[] { ';' });

2)someString.Split(';');

我看到我正在编写的代码中的第一个,并且想知道我是否可以安全地将其更改为第二个或者为什么他们选择以第一种方式执行此操作。

感谢。

2 个答案:

答案 0 :(得分:9)

public string[] Split(params char[] separator)

方法参数为params char[]params关键字表示您可以显式提供数组,或让编译器为您创建一个数组。在第一个表单中,您将明确提供该数组。当然,如果要使用该方法的其他overloads来指定其他行为,则需要使用此表单。否则,您可以简单地使用第二个表单并列出分隔符,并以逗号分隔,以便于使用。

为什么以前的程序员在第二种形式中选择了第一种形式,我不能说。我不知道先前框架版本中需要显式数组的方法表单。但是,如果您愿意,您应该可以安全地更改表格,并且您肯定会进行测试以验证预期的行为。

答案 1 :(得分:2)

第一个选项中,如果您想拆分多个字符,则可以在字符数组中指定。如果只有一个字符用于拆分,则使用第二个选项。

考虑以下示例:

string someString = "Somestring;abc.def.abc"; 
//following will return 4 elements array, after splitting on ';' and '.'
string[] splitedArray = someString.Split(new[] { ';','.' }); 
//following will return 2 elements in array after splitting on a single character
string[] splitedOnSingleCharacter  = someString.Split(';');