0

これら 2 行のコードに違いはありますか?

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

2)someString.Split(';');

私が取り組んでいるコードの最初のものを見て、それを安全に2番目に変更できるかどうか、またはなぜ最初の方法を選択したのか疑問に思っていました.

ありがとう。

4

2 に答える 2

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

メソッドの引数はparams char[]です。キーワードはparams、配列を明示的に指定するか、コンパイラに配列を作成させることができることを意味します。最初の形式では、配列を明示的に提供しています。もちろん、メソッドの他のオーバーロードを使用して追加の動作を指定する場合は、このフォームを使用する必要があります。それ以外の場合は、2番目のフォームを使用して、使いやすさのために区切り文字を行とコンマ区切りでリストするだけです。

以前のコーダーが2番目のフォームよりも最初のフォームを選択した理由はわかりません。以前のフレームワークバージョンで明示的な配列を必要としたメソッドフォームを認識していません。ただし、そのように選択した場合は、フォームを安全に変更できるはずです。また、期待される動作を確認するために確実にテストします。

于 2012-10-16T05:30:39.570 に答える
2

最初のオプションで、複数の文字に分割する場合は、文字配列で指定できます。分割する文字が 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(';');
于 2012-10-16T05:27:32.523 に答える