C#中的实习字典值

时间:2015-11-11 01:30:42

标签: c# dictionary

我正在玩string.Intern()来解决我的问题:一个包含大量键和少量值的字典。各种键导致相同的值(理论上),但实际上每个值都不同。我不希望这样,因为这是一个巨大的浪费。我 真的 需要做实习。我知道它将持续一个应用程序的整个生命周期。这不仅是可以接受的,甚至是可取的。

所以我尝试为此目的编写InternedDictionary,但它似乎不起作用。为什么?在标有string.Intern(x)符号的行中,使用*时,内存消耗似乎相同。那怎么改进呢?

public class InternedDictionary : Dictionary<int, string>
{
    new public void Add(int key, string value)
    {
        base.Add(key, string.Intern(value));
    }
}

static void Main(string[] args)
{
    int n = 1000000;

    var dict = new InternedDictionary();

    for (int i = 0; i < n; i++)
    {
        dict.Add(i, new string('x', (i % 10) * 1000));
    }

    GC.Collect();
    Console.WriteLine("Done.");
    Console.ReadLine();
}

0 个答案:

没有答案