2014-02-04 4 views
0

Добрый день, я не могу понять, почему я не могу сделать следующий массив:формы # C objectArray вне метод

Label[] labels = new Label[25] { label1, label2, label3, label4, ... label 25 }; 

Только под этим заявлением I`ve получил рабочую массив:

int[] array2 = new int[] { 1, 3, 5, 7, 9 }; 

Ошибка, которую VS дает мне на этикетках с 1 по 25: , полевой инициализатор не может ссылаться на нестатический, метод или свойство «Class.Forms1.label1»

Следующая ссылка показывает нам, что intarray правильный, но почему мой LabelArray неверен? http://msdn.microsoft.com/en-us/library/9b9dty7d.aspx

Примечание: оба массива протестированы внутри и снаружи функции.

+0

Я хочу использовать его вне метода, в методе со статическим и размера массива, не работает –

+0

@Steve Согласно сообщению об ошибке; это инициализатор поля, а не код в статическом методе. – Servy

+0

@Steve Сообщение довольно самоочевидно в моих глазах. Инициализатор поля не может ссылаться на других членов экземпляра. Это то, что он делает, и это запрещено. Вызов элемента экземпляра для статического метода - это совершенно другое сообщение об ошибке. – Servy

ответ

1

Как указывает ошибка, вы не можете ссылаться на поля других экземпляров одного и того же экземпляра в инициализаторе для другого поля экземпляра.

Ваш массив int не ссылается ни на какие другие поля, он просто добавляет значения лимита времени компиляции как значения массива.

Вам просто нужно создать массив в конструктор типа-, а не как поле инициализаторе:

public class Foo 
{ 
    private Label label1, label2; 
    private Label[] labels; 
    public Foo() 
    { 
     labels = new []{ label1, label2 }; 
    } 
} 
+0

Имеет смысл, спасибо! –

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