我有一個關於字符串創建問題,在一個循環下面是一個代碼示例:字符串創建
static void Main(string[] args)
{
for (int i = 1; i <= 1000000; i++)
{
Add(GetStr());
}
Console.WriteLine("hmmmmmmmm");
Console.ReadLine();
}
public static string GetStr()
{
return "OK";
}
public static void Add(string str)
{
list.Add(str);
}
多少串的數量將存儲在上面的代碼的情況下創建???
長期:* one *,由於[string interning](http://broadcast.oreilly.com/2010/08/understanding-c-stringintern-m.html)。儘管每次調用GetStr,字符串都會在被執行前被分配,然後被垃圾收集。 – 2015-02-24 06:59:08
我不認爲這應該被重複關閉。引用的問題是關於動態字符串。這個問題是關於一個*常量字符串*。 'OK'將被轉換成'LDSTR' IL操作碼,它將存儲在元數據**中的字符串**的引用推送出去。所以只會分配一個字符串。 *在實習前不會有臨時字符串被分配*。 – 2015-02-24 07:25:04
@BassamAlugili:列表中的100億引用非常多:-) – 2015-02-24 07:38:55