什么都利用实习生池?
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十进制
编辑:查看此 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十进制