因此,根据我对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;
}
答案 0 :(得分:5)
你错了;使用String不会(通常)导致内存不足。
如果你进行大量连接,使用字符串效率较低,因为它需要构建一个新字符串并在每次连接时丢弃旧字符串。
在这种情况下,您应该使用StringBuilder来构建字符串,然后在想要显示它时调用ToString()
。
您的代码不包含任何连接,因此使用StringBuilder不会有任何好处。