我们都知道,string类是一个reference type。看下面这段代码: string s1 = "hello";string s2 = s1;Console.WriteLine(s1);Console.WriteLine(s2);s1 = "world";Console.WriteLine(s1);Console.WriteLine(s2); 按理来说,s1被赋予world之后,那么s2应该也是指向这段内存空间,输出world,但实际上不是这样。代码输出为:hellohelloworldhelloC#高级编程中是这么解释的,s1被修改后,会重新分配一块内存,来指向新的s1。这是解释了为什么会有这个结果。但是,它没有解释,CLR为什么要这么特殊处理string类。难道,因为string类用的特别多,要符合大家的使用习惯?看下面这段代码,class很明显也是一个reference,但是结果却和上面不同。 // 类的定义Console.WriteLine(t2.ToString()); 上述代码输出的,是我们期望的值:10102020 相关文章: 2021-08-31 2021-06-05 2021-08-03 2021-08-22 2021-07-20 2021-08-26 2022-01-11