C#引用类型问题

为什么String无法创建引用类型?
2025-03-09 21:40:23
推荐回答(1个)
回答1:

Well,你对C#里的引用类型和值类型还没有彻底搞懂。

String类型和字符串字面量本质上是一样的,都是引用类型。

String i=... // 在托管堆开辟了一块内存(假定地址为0x13EABC)
String j=i; // 此时j和i同时指向了托管堆的某块内存的地址
i="101";    // i重新指向了托管堆值为101的某块内存地址(假定地址为0x13EF5),j仍然不变。理解这点很重要
j="10001";  // j重新指向了托管堆值为10001的某块内存地址(假定地址为0x13EFF)
// 至此,托管堆内存地址为0x13EABC再也没有栈区的引用,它很快将被GC回收,具体何时回收由.NET底层机制自动执行。

So,当你输出i,j的值肯定是不同的。