2015-05-20 28 views
0

編輯:看這個MSDN網頁什麼都利用實習生池?

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

上備註爲它的String.intern提到了CLR如何與文字字符串和實習生池進行交互。

我想知道是否有任何其他例子添加引用實習生池而不是字符串文字?

我可以找到一個明確的清單,列出所有人都被拘留了嗎?

+0

我不能確定的如何爲這個問題展示我的研究成果。我有搜索谷歌,堆棧溢出和MSDN努力尋找其他引用實習生池,並沒有取得成功(因此,問題)我顯然覺得這個問題是有用的,我不明白什麼需要澄清? – Ethan

回答

1

爲了eligable爲實習,類型必須是:

1)引用類型。 Interning使用對象的引用來放置指向一般位置而不是分配給對象的堆中的區域。由於價值類型只是通過價值來解決,所以沒有辦法實施它們。

2)不可變。一個被攔截的類型可以被多個獨立的對象引用,而用戶甚至可能不知道它們是被攔截的。因此,對象的值不能改變。

下面是基本的CLR類型及其對應的C#別名列表。所有的類型,除了System.String都是值類型。所有這些,除了System.String都是可變的。因此,只有System.String會成爲實習生的候選人(是的,這是唯一被實習的班級)。

  • System.Boolean布爾
  • System.SByte爲sbyte
  • System.Int16短
  • System.Int32詮釋
  • System.Int64長
  • System.Byte字節 System.UInt16形式USHORT
  • System.UInt32 uint
  • System.UInt64 ulong System.Single浮
  • System.Double雙
  • System.Char炭 System.String串
  • System.DateTime的N/A
  • System.Decimal小數