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/

10-13 03:22