为什么string是引用类型 值还不可以修改

C#把数据类型分为值类型和引用类型。值类型操作简单,引用类型更省空间。


C#一共有15个预定义类型,其中13个值类型(8个整型、2个浮点类型、decimal、bool、char),2个引用类型(string、object)。


值类型适合空间使用少的类型,如 8个整型、2个浮点类型、decimalbool、char。


引用类型适合空间使用大的类型,如string、我们自己声明的类。


string 因为空间较大,所以被作为引用类型。但是如果和一般的引用类型的赋值操作一样,那么容易被在不需要改动的情况下修改。


所以,微软良心,给了折中的办法,每次值的变更,都会给出一个新的地址给变量。原来的地址还是原来的值,自己的修改不影响别人。


这样,string既有引用类型的性能,又有值类型的便捷。