从使用 Reflector 的简要观察来看,它看起来像String.Substring()
为每个子字符串分配内存。我的说法正确吗?我认为这没有必要,因为字符串是不可变的。
我的根本目标是创建一个IEnumerable<string> Split(this String, Char)
不分配额外内存的扩展方法。
大多数具有不可变字符串的语言创建新的子字符串而不是引用现有字符串的原因之一是因为这会干扰稍后对这些字符串进行垃圾收集。
如果一个字符串用于其子字符串,但随后较大的字符串变得无法访问(除非通过子字符串),会发生什么情况。较大的字符串将无法收集,因为这会使子字符串无效。短期内看似节省内存的好方法从长远来看却变成了内存泄漏。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)