NET CLR via c# 第4版笔记 第19章 可空值类型
生活随笔
收集整理的這篇文章主要介紹了
NET CLR via c# 第4版笔记 第19章 可空值类型
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
System.Nullable<T> 是結(jié)構(gòu).
19.1 C# 對(duì)可空值類(lèi)型的支持
- C# 允許用問(wèn)號(hào)表示法來(lái)聲明可空值類(lèi)型,如:
- System.Nullable<T>應(yīng)用操作符解析規(guī)則:
- 一元操作符(+, ++, -, --, !, ~) 操作數(shù)是 null ,結(jié)果就是 null.
- 二元操作符(+, -, *, /, %, &, |, ^, <<, >>) 兩個(gè)操作數(shù)任何一個(gè)是 null ,結(jié)果就是 null . 但有一個(gè)例外,它發(fā)生在將 & 和 | 操作符應(yīng)用于 Boolean? 操作數(shù)的時(shí)候.這種情況和 SQL 的三值邏輯一樣.都不為 null ,正常計(jì)算;都為 null ,結(jié)果為 null ;其一為 null 時(shí),見(jiàn)下面示例:
null & true = null ; null | true = true ; null & false = false ; null | false = null ; - 相等操作符(==, !=) 兩個(gè)操作數(shù)都是 null,兩者相等; 一個(gè)操作數(shù)是 null, 兩者不相等;兩個(gè)操作數(shù)都不是 null,就比較值來(lái)判斷是否相等.
- 關(guān)系操作符(<, >, <=, >=) 兩個(gè)操作數(shù)任何一個(gè)是 null,結(jié)果就是 false ,兩個(gè)操作數(shù)都不是 null,就比較值.
- 操作可空實(shí)例會(huì)生成大量代碼,且速度慢于非可空類(lèi)型.
- 定義自己的值類(lèi)型來(lái)重載操作符,編譯器能正確識(shí)別它并調(diào)用你重載的操作符(方法).
19.2 C# 的空接合操作符
- C# 提供了一個(gè)"空接合操作符",即 ?? 操作符,它要取兩個(gè)操作數(shù).假如左邊的操作數(shù)不為 null,就返回這個(gè)操作數(shù)的值,否則,就返回右邊的操作數(shù)的值.
- 既可用于引用類(lèi)型,也能用于可空值類(lèi)型.
19.3 CLR 對(duì)可空值類(lèi)型的特殊支持
- 裝箱: 當(dāng) CLR 對(duì) Nullable<T> 實(shí)例進(jìn)行裝箱時(shí),會(huì)檢查它是否為 null .如果是,CLR 不裝箱任何東西,直接返回 null . 如果不為 null , CLR 從可空實(shí)例中取出值并進(jìn)行裝箱.
- 拆箱:
- 在 Nullable<T> 對(duì)象上調(diào)用 GetType,會(huì)返回 T 的類(lèi)型
- Nullable<Int32> 類(lèi)型的變量 n 可以轉(zhuǎn)型為接口類(lèi)型 IComparable<Int32>
轉(zhuǎn)載于:https://www.cnblogs.com/harry-wang/p/7410559.html
總結(jié)
以上是生活随笔為你收集整理的NET CLR via c# 第4版笔记 第19章 可空值类型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【JSOI2008】星球大战 (并查集)
- 下一篇: C#.NET常见问题(FAQ)-如何使用