编辑:查看此 MSDN 页面上的备注
https://msdn.microsoft.com/en-us/library/system.string.intern(v=vs.110).aspx
对于 String.Intern,它提到了 CLR 如何与文字字符串和实习池交互。
我想知道除了字符串文字之外,是否还有其他添加对实习池的引用的示例?
我能找到一份明确的清单,列出所有被拘留的物品吗?
编辑:查看此 MSDN 页面上的备注
https://msdn.microsoft.com/en-us/library/system.string.intern(v=vs.110).aspx
对于 String.Intern,它提到了 CLR 如何与文字字符串和实习池交互。
我想知道除了字符串文字之外,是否还有其他添加对实习池的引用的示例?
我能找到一份明确的清单,列出所有被拘留的物品吗?
为了有资格实习,类型必须是:
1)引用类型。实习使用对象的引用,将其指向一般位置,而不是堆中分配给对象的区域。由于值类型只是按值寻址,因此没有办法实习它们。
2)不可变。一个被实习的类型可以被多个独立的对象引用,用户甚至可能不知道他们是被实习的。因此,对象的值不能改变。
下面是基本 CLR 类型及其对应的 C# 别名的列表。除 System.String 之外的所有类型都是值类型。因此,除了 System.String 之外,所有这些也是可变的。因此,只有 System.String 将成为实习的候选人(是的,它是唯一被实习的类)。