2013-10-16 4 views
7

То, что я пытаюсь получить, - это глобальный глобальный список, инициализированный строками. Если бы я хотел только простой список я мог бы просто инициализировать список со строками, разделенными запятой, как этот
C# инициализировать статический список в классе

public static readonly List<string> _architecturesName = new List<string>() 
{"x86","x64" }; 

У меня настроить статический класс «Globals», в этом классе я добавляю список на основе на другом класс «ArchitecturesClass», которые будут использоваться в качестве полей для списка аналогичен тому, что было сделано здесь: Are 2 dimensional Lists possible in c#?

public class ArchecturesClass 
{ public string Id { get; set; } 
    public string Name { get; set; }   } 

    `*test1->*` public static readonly List<ArchecturesClass> ArchitectureList = 
      new List<ArchecturesClass>() { "2", "9"}; 
    `*test2->*` public static readonly List<ArchecturesClass> ArchitectureList = 
      new List<ArchecturesClass>() {architecturesId = "2", 
             architecturesName = "3"}; 

ошибка на струнах является то, что коллекция инициализация имеет некоторые в действительных аргументах и ​​ в конце концов я хотите, чтобы все классы в проекте могли читать что-то g, как Globals.ArchtecutreList.ID и соответствующий Globals.ArchtecutreList.Name;, и я хотел бы инициализировать это в глобальном классе, не будучи в методе.

+1

Вы не можете инициализировать список со значениями, принадлежащими этому объекту. Вы должны создать новый объект и использовать сокращенные задания там. –

ответ

12

Синтаксис

new List<ArchecturesClass>() {architecturesId = "2", 
           architecturesName = "3"}; 

, вероятно, следует

new List<ArchecturesClass>() { new ArchecturesClass>() { architecturesId = "2", 
           architecturesName = "3"}}; 

Collection initializers ожидают вас предоставить экземпляры типа, содержащихся в списке.

Ваша другая попытка

public static readonly List<ArchecturesClass> ArchitectureList = 
     new List<ArchecturesClass>() { "2", "9"}; 

терпит неудачу, потому что "2" и "9" являются строками, а не экземпляры ArchitecturesClass.

+0

Почти, я думаю, что это получило его: общественный статический список арки = новый List { новых ArchecturesClass() {architecturesId = "0", architecturesName = "x86"}, новых ArchecturesClass() {architecturesId = "9", architectureuresName = "x64"} }; Также найден этот ref, который имеет хороший пример внизу http://msdn.microsoft.com/en-us/library/vstudio/bb384062(v=vs.100).aspx – Wolfkc

Смежные вопросы