首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# 字符串常量池:原理、意義與《CLR via C#》深度參考

     編輯:程式設計綜合問答

什麼是字符串常量池

.NET 運行時維護一張字符串驻留表,存儲編譯期常量字符串及運行時調用 String.Intern 產生的字符串。相同內容的字符串在池中唯一實例。

核心特性

  • 編譯期常量:代碼中雙引號字面量自動入池。
  • 運行時入池:String.Intern(str) 將字符串加入池,返回池中引用。
  • 去重優勢:減少內存佔用,加速字符串比較(引用相等即內容相等)。
  • 生命周期:池中字符串隨 AppDomain 卸載而釋放(.NET Framework),.NET Core 無跨 AppDomain 概念。

代碼演示


string a = "hello";
string b = "he" + "llo"; // 編譯期常量折疊,同一實例
Console.WriteLine(Object.ReferenceEquals(a, b)); // True

string c = Console.ReadLine(); // 運行時輸入
string d = String.Intern(c);   // 手動入池
Console.WriteLine(Object.ReferenceEquals(a, d)); // 若輸入 hello 則 True

最佳回答

https://www.thinksaas.cn/group/topic/69377/
具體可以去看clr via C#

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved