<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      代碼改變世界

      System.Nullable可空值類型---《clr via c#》筆記

      2012-02-02 17:08  海不是藍  閱讀(548)  評論(0)    收藏  舉報

      System.Nullable

      Clr對可空值類型支持的類,System.Nullable

      它的內部實現就不啰嗦了,自己去看。

      它有重要的1個方法和2個屬性

      public T GetValueOrDefault();

      獲取該類型的默認值

      public bool HasValue { get; }

      返回一個布爾值,對象是否包含值

      public T Value { get; }

      得到對象的值,如果對象是NULL,就會拋出異常。

      try

      {

          System.Nullable<Int32> i = 2;

          Console.WriteLine(i.HasValue);

          Console.WriteLine(i.Value);

          i = null;

          Console.WriteLine(i.GetValueOrDefault());

          Console.WriteLine(i.HasValue);

          Console.WriteLine(i.Value);

      }

      catch (InvalidOperationException ex)

      {

          Console.WriteLine(ex.Message);

      }

      在使用使用可空值類型的時候應該先判斷是否存在值,而不能像上面那樣直接去獲取值。

       

      C#對可空值類型的支持

      簡單的語法

      System.Nullable<Int32> i = 2;

      等同于

      Int32? i = 2;

      可空值類型的轉換和轉型

      Int32? i = 2;

      Int32 j = (Int32)i;

      上面是從可空值類型顯式轉換為Int32

      Int32? i = 2;

      double? d = i;

      上面是可空值類型的轉型,從Int32?轉到Double?

      然后就是可空值類型的各種操作符,應該和普通類型的操作符使用差不多吧,只是clr是相應對于可空值類型生成很多Il相關的處理代碼。

       

      語法糖!空接合操作符??

      ??的作用:它要獲取2個操作數,假如左邊的操作數不為null,那么返回這個操作數的值,如果左邊的操作數為null,那么就返回右邊的。

      ??奇妙的地方在于它既可以用于引用類型,又可以用于可空值類型。

      Int32? i = 2;

      //Int32? j = i.HasValue ? i.Value : 123;

      Int32 j = i ?? 123;

      上面注釋掉的代碼和下面那一行的代碼等效的。

      再看看引用類型的??

      string str = null;

      string str1 = str ?? "abc";

      ??的優(yōu)點

      1.在拉姆達這些里面使用能讓代碼變得簡介和容易理解。

      2.?書上貌似沒說什么了,88

       

      CLR對可空值類型的特殊關照

      可空值類型的裝箱拆箱

      由于這個null,讓可空值類型的裝箱拆箱變得不那么順利,但是clr對她特殊關照了下。

      //對Int32? I進行裝箱,要么返回Null,要么返回已裝箱的I

      Int32? i = null;

      object obj = i;

      對于已經裝箱的值類型引用是null,而且要把他拆分為Nullable<T>,那么clr會將Nullable<T>的值設為null。

      object obj = null;

      Int32? i = (Int32?)obj;

      Console.WriteLine(i ?? 0);

      最后輸出0。

       

      CLR撒謊了!

      在一個Nullable<T>對象上調用GetType()時,CLR會撒謊說類型是T,而不是Nullable<T>。

      Int32? i = 2;

      Console.WriteLine(i.GetType());

      輸出的是System.Int32。

      主站蜘蛛池模板: 国产成人精选视频在线观看不卡 | 日本亚洲色大成网站www久久| 91精品国产午夜福利| 国产亚洲精品成人aa片新蒲金| 精品一区二区中文字幕| 天天干天天干| 日本东京热一区二区三区| 亚洲精品日本久久一区二区三区| 精品亚洲国产成人av| 久久成人国产精品免费软件| 亚洲国产欧美在线看片一国产 | 又大又粗又硬又爽黄毛少妇| 亚洲成人四虎在线播放| 久久日韩在线观看视频| AV最新高清无码专区| 国产95在线 | 欧美| 日韩精品18禁一区二区| 高清无打码一区二区三区| 国产成人乱色伦区| 亚洲中文字幕精品久久| 无码av中文字幕久久专区| 国产精品一区二区麻豆蜜桃| 日韩精品欧美高清区| 彭水| 在线成人| 日韩高清在线亚洲专区国产| 人妻丝袜中文无码AV影音先锋专区| 国产伦精品一区二区三区| 最新中文字幕av无码专区不| 国产极品尤物粉嫩在线观看 | 性夜夜春夜夜爽夜夜免费视频| 中文字幕理伦午夜福利片| 丰满妇女强制高潮18xxxx| 精品不卡一区二区三区| 99热这里只有精品免费播放| 在线精品自拍亚洲第一区| 日韩精品专区在线影观看| 久久国产精品精品国产色| 日韩少妇人妻vs中文字幕| 亚洲AV成人无码久久精品四虎| caoporn成人免费公开|