什么都利用实习生池?

What all utilizes an intern pool?

编辑:查看此 MSDN 页面上的备注

https://msdn.microsoft.com/en-us/library/system.string.intern(v=vs.110).aspx

对于 String.Intern,它提到了 CLR 如何与文字字符串和实习生池交互。

我想知道除了字符串文字之外,是否还有其他添加对实习生池的引用的示例?

我可以找到所有被拘留内容的明确列表吗?

为了符合实习条件,类型必须是:

1) 引用类型。 Interning 使用对象的引用,将其指向一个一般位置,而不是堆中分配给该对象的区域。由于值类型只是按值寻址,因此无法对它们进行实习。

2) 不可变。一个被驻留的类型可以被多个原本应该独立的对象引用,用户甚至可能不知道它们是被驻留的。因此,对象的值不能改变。

下面是基本 CLR 类型及其对应的 C# 别名的列表。除了 System.String 之外的所有类型都是值类型。因此,除了 System.String 之外,所有这些也是可变的。因此,只有 System.String 是实习的候选人(是的,它是唯一被实习的 class)。

  • System.Boolean 布尔值
  • System.SByte sbyte
  • System.Int16 短
  • System.Int32 int
  • System.Int64 长
  • System.Byte字节 System.UInt16 ushort
  • System.UInt32 uint
  • System.UInt64 乌龙 System.Single浮动
  • System.Double 双
  • System.Char 字符 System.String 字符串
  • System.DateTime N/A
  • System.Decimal十进制