string为什么不做成值类型,身为引用类型赋值时却跟值类型的赋值形式混

解决方案 »

  1.   

    string 有很多操作要做。如果做成值类型会占用太多的资源。
      

  2.   

    当你初始化一个string对象的值或是赋予一个新的字符串
    给它的时候都将在内存中创建一个新的对象
      

  3.   

    C# string类型是特殊的引用类型,它的实例是只读的。这个地方要搞清楚语法和实现的区别 。在C#的语法中,◆static void StrChange(string str) 是值传递 ◆static void StrChange(ref string str) 是引用传递但在实现上,static void StrChange(string str) 这种值传递,在函数体内对str进行修改之前,与函数外部的变量指向同一块内存,是“引用”传递,但在函数体内对str修改后,就会触发对该str重新分配一块内存。 所以说,String 是引用类型,不过是不可变的。对字符串做一些操作(比如大小写的转换、+=), 实际上是重新创建了一个字符串。这也是为什么在做大量字符串拼接的时候要使用StringBuilder 而不用+=。