string interning - 这段代码应该只在内存中创建10个字符串吗?

Cod*_*der 1 c#

似乎创造了更多.请在这里建议为什么或如何正确实习.

谢谢

        IList<string> list = new List<string>(10000);

        for (int i = 0; i < 10000; i++)
        {
            for (int k = 0; k < 10; k++)
            {
                list.Add(string.Intern(k.ToString()));
            }
        }

        Console.WriteLine("intern Done");
        Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)

Ree*_*sey 5

它将在循环过程中创建更多(每次迭代将生成一个新字符串,然后实际值替换它),但是您的结果列表应该只有10个对实习字符串值的唯一引用.

完成后,实习表应包含10个字符串(对于k的值),以及"intern Done",以及应用程序中的任何其他文字字符串.