字符串构建器是正确的选择吗?

时间:2012-08-14 00:15:33

标签: c# string serial-port

因此,根据我对string vs StringBuilder的理解,字符串构建器实际上会修改自身的实例,而字符串只会创建一个新实例。因此,如果我正确理解这一点,那么通过使用字符串方法来不断变化的变量,我基本上可以最终使用所有内存,直到计算机需要转储它来腾出空间。

我正在做的是使用事件处理程序来监视串行通信。我将接收数据并解析出来并将其显示在文本框中。事件处理程序使用string来实现此目的。考虑到更好的编程,而不是在我不需要时耗尽所有内存,我正在尝试清理我的代码。

我开始使用字符串构建器进行编码,并开始获取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;
}

1 个答案:

答案 0 :(得分:5)

你错了;使用String不会(通常)导致内存不足。

如果你进行大量连接,使用字符串效率较低,因为它需要构建一个新字符串并在每次连接时丢弃旧字符串。
在这种情况下,您应该使用StringBuilder来构建字符串,然后在想要显示它时调用ToString()

您的代码不包含任何连接,因此使用StringBuilder不会有任何好处。