Использование большого статического массива в C # (Silverlight в Windows Phone 7)

У меня вопрос настолько простой, что я не могу поверить, что не могу на него ответить. Но вот и все.

У меня есть большой статический список (городов, широт и долгот), который я хочу использовать в своем приложении Windows Phone 7 Silverlight. Их около 10 тысяч. Я' Мне бы хотелось статически встроить эти данные в свое приложение и получить к ним доступ в виде массива (мне нужно довольно часто циклически просматривать весь список в коде).

Что будет моим наиболее эффективным средством их хранения? Я немного сторонник олдскула, поэтому я подумал, что самый быстрый способ сделать это:

public struct City
{
    public string name;
    public double lat;
    public double lon;
};

, а затем ...

private City[] cc = new City[10000];

public CityDists()
{
    cc[2].name = "Lae, Papua New Guinea"; cc[2].lat = 123; cc[2].lon = 123;
    cc[3].name = "Rabaul, Papua New Guinea"; cc[3].lat = 123; cc[3].lon = 123;
    cc[4].name = "Angmagssalik, Greenland"; cc[4].lat = 123; cc[4].lon = 123;
    cc[5].name = "Angissoq, Greenland"; cc[5].lat = 123; cc[5].lon = 123;
...

Однако это гудит с ошибкой "нехватки памяти" перед кодом фактически запускается (я предполагаю, что сам код оказался слишком большим для загрузки в память).

Все, что я читаю в Интернете, подсказывает мне использовать ресурс или файл XML, а затем десериализовать его в экземпляры класса. Но может ли это быть так же быстро, как использование структуры? Разве XML не займет много времени на синтаксический анализ?

Я думаю, что я способен написать здесь код - я просто не уверен, с чего лучше всего начать. Я' m больше всего интересует скорость загрузки и (что более важно) доступ во время выполнения.

Любая помощь очень ценится - первый вопрос здесь, поэтому я надеюсь, что не сделал ничего тупоголового.

Chris

10
задан Chris Rae 6 November 2010 в 00:56
поделиться