从我开始c#
编程的角度来看,这在我的脑海中确实是一个问题。
为什么int
是struct
类型
string
是class
类型
答案 0 :(得分:11)
因为int
具有固定长度,而string
长度是可变的。因此,编译器可以为int
保留一个固定区域(主要在堆栈上),并且必须为堆上的string
char数组维护一个灵活的缓冲区。
答案 1 :(得分:2)
int是值类型,string是引用类型。当您将值传递给方法或将它们分配给新变量时,值(通过值)传递值(复制),依此类推。引用类型仅复制引用。
对于像int或浮点数这样的小对象,复制很快,但在某些时候复制操作的成本变得昂贵,因此引用比始终复制值更可取。
尽管string也是不可变的,就像大多数值类型一样(是否存在任何可变值类型?)因为字符串可能非常大,所以它们不适合传递值。