0

stringしたがって、 vsについて私が理解していることStringBuilderは、文字列ビルダーは実際にそれ自体のインスタンスを変更し、文字列は新しいインスタンスを作成するだけであるということです。したがって、これを正しく理解していれば、絶えず変化する変数に文字列メソッドを使用することで、基本的に、コンピューターがスペースを確保するためにダンプする必要があるまで、最終的にすべてのメモリを使用することができます。

私がやっていることは、イベント ハンドラーを使用してシリアル通信を監視することです。データを取り込んで解析し、テキスト ボックスに表示します。現在、イベント ハンドラーは文字列を使用してこれを実現しています。より良いプログラミングと、必要のないときにすべてのメモリを使い切らないようにするために、コードをクリーンアップしようとしています。

文字列ビルダーでコーディングを開始しStringBuilder、.contains メソッドを含まないビルド エラーが発生し始めました。

基本的に、放っておくべきかどうか気になりますか?これに別の方法でアプローチする必要がありますか?string必然的に記憶がなくなるという点で、私は正しい理解を持っているでしょうか?

private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
    SerialPort sp = (SerialPort)sender;

    string indata = sp.ReadExisting();
    rx.AppendText(Environment.NewLine + indata);
    string dataCheck = indata.ToUpper();
    if (dataCheck.Contains("CONNECT") || indata.Contains("CONNECTED"))
    {
        cState.Text = "Connected";
        connectLink();
    }
    if (dataCheck.Contains("NO CARRIER"))
    {
        cState.Text = "Disconnected";
        disconnect();
    }
    dataCheck = null;
}
4

1 に答える 1

5

あなたは間違っています。String を使用しても、(一般に) メモリ不足になることはありません。

多くの連結を行っている場合、連結するたびに新しい文字列を作成し、古い文字列を破棄する必要があるため、string を使用すると効率が低下します。
このようなシナリオでは、StringBuilder を使用して文字列を作成し、それToString()を表示したいときに呼び出す必要があります。

コードには連結が含まれていないため、StringBuilder を使用しても効果はありません。

于 2012-08-14T00:17:10.233 に答える