C#NULL條件運算符

C#6.0新增的特性 NULL條件運算符 ?.數組

 

以前咱們在須要判斷某個對象是否爲空的是這樣的spa

Person per = null;

            if (per != null)
            {
                Console.Write("");
            }

若是咱們不這樣判斷的話,那麼你就會獲得一個 System.NullReferenceException  錯誤,3d

 

固然你也可使用三元運算符code

string str=person == null ? null :person.Name 對象

可是在C#6.0的時候推出 NULL條件運算符,這樣就使咱們少寫了不少代碼,增長了咱們不少的工做效率blog

?. NULL條件運算符索引

 

 Person per = null;


            string name = per?.Name;

若是咱們這樣寫的話,一樣也能夠判斷是否爲空,代替了if的判斷和簡化了三元運算符的操做string

例子:it

咱們嘗試一下,在一個集合中io

  List<Person> person = new List<Person>()
            {
                new Person{ Name="張三",Age=12},
                new Person{ Name="李四",Age=12},
                new Person{ Name=null,Age=13},
                new Person{ Name="張三",Age=12},
            };

咱們須要查找姓是李的人,若是咱們不使用NULL條件運算符,結果是..

不出意料,由於Name中存在NUll值,因此獲得了一個System.NullReferenceException 

此次咱們加上NULL條件運算符,結果...

加上NULL條件運算符以後,返回類型發生了改變,變成了Nullable<T>,若是咱們還須要原來的類型,只須要和空運算符一塊兒使用就能夠了

由於返回的是bool類型,那咱們看一下false返回的是什麼

就會返回符合條件的值

若是爲true又會返回什麼呢

咱們能夠清晰的能夠看到,爲true的時候,不只返回符合條件的數據,同時也返回了Name爲空的值

 ?[

NULL運算符不但可使用?.訪問對象的屬性和方法,還可使用?[監測數組或包含索引器的對象是否爲空

int[] are = new int[5] { 2, 3, 5, 7, 4 };

            int? value = are?.Length;

            int? result = are?[0];

NULL條件運算符返回的類型是Nullable<T>,咱們不想要這樣的類型的話須要配合 ?? 空運算符使用

?? 空運算符

int[] are = new int[5] { 2, 3, 5, 7, 4 };

            int value = are?.Length??0;

            int result = are?[0]??0;
相關文章
相關標籤/搜索