foreach (string sn in MACOrSerial.Split(','))
{
MACOrSerial = sn.Trim();
}
MACORSerial包含由逗号分隔的文本字符串(例如,AA123241,BB123431,CC1231243)。
我抓取一个子字符串,并将其放入相同的MACORSerial中。
这不会给我造成任何问题,因为foreach仍将使用内存中的原始MACOrSerial。
虽然我认为这是内存使用效率最高的方法,但这是否正确,还是应该只用新名称创建另一个字符串,例如
MacORSerialSubString = sn.Trim()?
我没有任何记忆问题。我只想确保我的代码简洁明了。
最佳答案
您的假设是不正确的-循环遍历了string[]
产生的Split
-这些都是新的字符串实例。
您没有通过将字符串重新分配给原始变量来节省任何内存,并且由于重复使用变量而失去了可读性。
这是一种更具可读性并使用某些内置功能的方法:
string[] serialNumbers = MACOrSerial.Split(new [] {',', ' ', '\r', '\n' },
StringSplitOptions.RemoveEmptyEntries);
foreach (string sn in serialNumbers)
{
// do stuff
}
关于c# - C#foreach内存缓存和字符串内存优化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9824620/