eat*_*mup 0 c# string serial-port
因此,根据我对stringvs的理解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;
}
Run Code Online (Sandbox Code Playgroud)
你错了; 使用String不会(通常)导致内存不足.
如果你正在进行大量连接,那么使用字符串效率会降低,因为它需要构建一个新字符串并在每次连接时丢弃旧字符串.
在这种情况下,您应该使用StringBuilder来构建字符串,然后ToString()在您想要显示它时调用.
您的代码不包含任何串联,因此使用StringBuilder不会有任何好处.