3Pi*_*3Pi 4 c# string reference
当使用SubString()方法创建字符串时,结果字符串是原始字符串元素的副本(因此现在有2个具有相同信息的内存位置),或者它是对现有内存位置的引用?
如果是副本,有没有办法让它成为参考?
它是一个副本,你不能有一个string对另一个字符串的引用..net字符串不由数组支持,它包含内联的char数据.即它是一个可变长度类,类似于数组.
虽然该子引用模型是一种可能的实现(我认为java字符串只是切片到char数组中),但它可能导致奇怪的行为,其中保留一个小的子字符串将整个字符串保存在内存中,这是java子字符串的常见缺陷.我想.net设计师想要避免这些问题.
您可以使用自己的字符串,例如具有此属性的类型.例如,您可以将切片用于char数组ArraySegment<char>.