我有一个关于字符串创建问题,在一个循环下面是一个代码示例:字符串创建
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