C#NULL條件運算符


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

 

之前我們在需要判斷某個對象是否為空的是這樣的

Person per = null;

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

如果我們不這樣判斷的話,那么你就會得到一個 System.NullReferenceException  錯誤,

 

當然你也可以使用三元運算符

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

但是在C#6.0的時候推出 NULL條件運算符,這樣就使我們少寫了很多代碼,增加了我們很多的工作效率

?. NULL條件運算符

 

 Person per = null;


            string name = per?.Name;

如果我們這樣寫的話,同樣也可以判斷是否為空,代替了if的判斷和簡化了三元運算符的操作

例子:

我們嘗試一下,在一個集合中

  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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM