將不確定變為確定~對象被new后什么時候會拋System.NullReferenceException
這可能并不是一個問題,因為它很多時間會被我們所忽視,我們在開發時,在頁面上使用一個對象的一個屬性,當對象被new后,可能還沒有賦值也可能返回給它的值為null,那這時使用它里面的屬性,它會拋System.NullReferenceException嗎?當我們對象不為null,我們使用這個對象的子對象,這個子對象如果為null,使用它的屬性,它會拋System.NullReferenceException嗎?
這是一個看似簡單的問題,但對于它的結果可能我們一時并不能確定,還是用機器來證明它吧
兩個類型:
1 /// <summary> 2 /// 小u 3 /// </summary> 4 class u 5 { 6 public string name { get; set; } 7 public int age { get; set; } 8 }
/// <summary> /// 大U /// </summary> class U {
public int ID { get; set; }
public string RealName{get;set;}
/// <summary> /// 小u是大U的屬性 /// </summary> public u u { get; set; } }
1 U u = new U(); 2 Console.WriteLine(u.ID); 3 Console.WriteLine(u.u.age);
我們可以看到小u是大U的一個屬性,我們建立大U時,如果不為小u賦值,它是null,而屬性ID默認值為0,我們輸出看一下
因為u是null,所以,我們輸出u中的屬性會怎樣?
Console.WriteLine(U.u.age);
OK,這時,系統就會拋出異常了,未將對象設置到對象的實例上,呵呵,一個結論產生:
當對象被new后,它內部的簡單類型的屬性可以訪問,輸出它的默認值,而復雜類型的屬性,如果為null,它也是不能訪問的!
浙公網安備 33010602011771號