2013-04-30 3 views
0

У меня есть класс и массив. Массив объявляется как type: Class.Как присвоить значение только одному свойству класса-массива?

//Class 
public class TestClass 
{ 
    public int testint { get; set; } 
     public string teststr { get; set; } 
    public TestClass(int _testint, string _teststr) 
    { 
     testint = _testint; 
      teststr = _teststr; 
    } 
} 

//Array declaration 
TestClass[] MyArray = new TestClass[ 3 ]; 

Теперь то, что я хочу сделать (это только для тестирования - у меня есть гораздо больше кода в виду при использовании этого метода я хочу работать):

Я хочу быть в состоянии установить ТОЛЬКО teststr или только testint из массива-клетки, например, так:

MyArray[ 0 ].testint = 3; 

Это не возвращает никаких ошибок, но если я пытаюсь напечатать это; результат пуст (пустой - пустой).

Я использую Blend 4 с Silverlight - пожалуйста, помогите, если вы знаете, как назначить отдельные свойства, как я хочу сюда!

+4

Я удивлен, что вы не имеете исключения нулевого указателя ... попытаться сделать ' MyArray [0] = новый TestClass() {testint = 3} 'вместо этого. – Thomas

+1

Надеюсь, что гораздо больший код, который вы имеете в виду, имеет имена свойств, заглавные. –

+1

@Thomas: Я думаю, это связано с тем, что этот код принимает участие в каком-то механизме привязки (см. Blend 4 с Silverlight), и поэтому NullPointerException должен обрабатываться пользовательским интерфейсом. –

ответ

3

Вам необходимо создать экземпляр вашего TestClass, потому что вы только что создали пустой массив, т. Е. Массив имеет 3 ссылки на ничего.

TestClass[] MyArray = new TestClass[ 3 ]; 

MyArray является {null, null, null}, так MyArray[0] == null

MyArray[0] = new TestClass(42, "42"); 

MyArray является {anObject, null, null}

MyArray[0].testint = 3; // this is valid 
+0

upvote, потому что я не мог понять, почему был downvote ... –

+0

Когда я пытаюсь это сделать, я получаю ошибку CS1729 в ​​этой строке: 'MyArray [0] = new TestClass();' –

+0

У вас нет en пустой конструктор, поэтому вы не можете вызвать TestClass() без аргумента. Вы можете либо добавить пустой конструктор в свой TestClass(), либо дать параметр конструктору, чтобы он соответствовал сигнатуре вашего существующего конструктора. –

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