4

Joe Duffy のブログstring.Substringは、 を使用することは を使用することよりも効率的であることを暗示していstring.Splitます。

メソッドが新しい文字列を割り当てないと言っているのか、Substringそれとも不要な割り当てを行わないため、より効率的かどうかはわかりません。それがどのように効率的であるかを説明し、例を示してください。

彼の最初の例は、配列を作成し、配列内の各文字列を処理していることを理解しています。

string str = ...;
string[] substrs = str.Split(',');
foreach (string subtr in substrs) {
Process(substr);
}

以下はどのように効率的ですか

string str = ...;
int lastIndex = 0;
int commaIndex;
while ((commaIndex = str.IndexOf(',', commaIndex)) != -1) {
    Process(substr, lastIndex, commaIndex);
    lastIndex = commaIndex + 1;

私が見ている String.IndexOfのは、コンマのインデックスを見つけてから文字列を処理することです。String.Substring彼は処理中にデータを抽出するために使用するつもりだと思います。以下のコメントの 1 つは、彼が 1 文字ずつ引っ張っている可能性があることを示唆しています。次のコンマに到達するまで、文字の配列を作成する可能性があるので、文字をプルするでしょうか?

4

1 に答える 1