for ループがあり、私がしているのはこれです。
forloop ( loop 7000 times)
{
x += 2000_char_long_string;
}
この forloop では、コードが非常に長く続きます。おそらく 1 分以上かかります。どうすればこの問題を解決できますか?
ありがとう。
for ループがあり、私がしているのはこれです。
forloop ( loop 7000 times)
{
x += 2000_char_long_string;
}
この forloop では、コードが非常に長く続きます。おそらく 1 分以上かかります。どうすればこの問題を解決できますか?
ありがとう。
文字列の操作は不変です。stmt x +=2000_char_long_string;のたびに新しい文字列が作成されます。実行されます。したがって、Kobiが提案しているように、StringBuilderクラスを使用する必要があります。
ただし、この場合、StringBuilderコンストラクターで容量を指定する必要があります。
これは、指定されていない場合、作成中のStringBuilderのデフォルト容量が16であるためです。
この容量が使い果たされると、新しい連続したメモリの場所が作成され、StringBuilderのすべてのコンテンツが新しい場所にコピーされ、インスタンスが新しい場所を指すようになります。最終的な文字列のおおよそのサイズ(おそらく7000 * 2000)をすでに知っているので、それに応じて容量を指定できます。
StringBuilderと容量に対する私の答えをご覧ください。詳細については。
C# 文字列オブジェクトは不変で、内容が変更されるたびに新しいオブジェクトが作成され、新しい内容がコピーされます。代わりに StringBuilder を使用してください。直面している問題に対処するために提供されています