2015-04-20 5 views
3

У меня есть следующий кодприсвоить значение свойству класса внутри класса

class TopClass 
{ 
    public string ClsProp1 { get; set; } 
    public string ClsProp2 { get; set; } 

    public SubClass ClsProp3 { get; set; } 
} 

class SubClass 
{ 
    public string SCProp1 { get; set; } 
    public string SCProp2 { get; set; } 
} 


class Program 
{ 
    static void Main(string[] args) 
    { 

     Test.TopClass TCN = new Test.TopClass(); 

     TCN.ClsProp1 = "TCProp1--string value"; 
     TCN.ClsProp2 = "TCProp2--string value"; 
     TCN.ClsProp3.SCProp1 = "SCProp1--string value"; 
     TCN.ClsProp3.SCProp2 = "SCProp2--string value"; 

    } 
} 

Я не могу показаться, чтобы выяснить, как создать экземпляр TCN.ClsProp3.ScProp1 и TCN.ClsProp3.ScProp2 значения. Я продолжаю получать «Необработанное исключение типа« System.NullReferenceException », произошедшее в Test.exe Дополнительная информация: Ссылка на объект не установлена ​​в экземпляр объекта." сообщение об ошибке. Простите мое невежество, я действительно пытаюсь научиться ООП с нуля.

Заранее спасибо

ответ

8

Вы должны инициализировать ClsProp3 объект, прежде чем использовать его.

TCN.ClsProp3 = new SubClass(); 

Вы также можете инициализировать его в TopClass конструктор, как это:

class TopClass 
{ 
    public TopClass() 
    { 
     ClsProp3 = new SubClass(); 
    } 
    public string ClsProp1 { get; set; } 
    public string ClsProp2 { get; set; } 

    public SubClass ClsProp3 { get; set; } 
} 
+0

Doh .. Я не могу поверить, что все было так просто. Я был уверен, что это у меня в коде. спасибо, что нашли время ответить. – stumped221

0

Узнавая, что лучше выбрать хороший домен. TopClass с ClsPropX не приносят приятного опыта обучения.

Что касается вашего оригинального вопроса, запустите отладчик и посмотрите, что соответствует ClsProp3. И имейте в виду, что невозможно присвоить что-либо «ничто», то есть null на языке C#.

+0

Я не совсем уверен, что понимаю ваш комментарий, но спасибо за то, что уделил время комментарию. – stumped221

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