最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#中的DateTime是值類(lèi)型還是引用類(lèi)型

 更新時(shí)間:2017年04月23日 10:19:17   作者:zhixin9001  
近期遇到了DateTime到底是值類(lèi)型還是引用類(lèi)型的疑惑,順勢(shì)較深入地了解一下DateTime相關(guān)的內(nèi)容,大家有需要的朋友可以參考下

近期遇到了DateTime到底是值類(lèi)型還是引用類(lèi)型的疑惑,順勢(shì)較深入地了解一下DateTime相關(guān)的內(nèi)容

結(jié)論:DateTime是值類(lèi)型,因?yàn)镈ateTime是結(jié)構(gòu)體,而結(jié)構(gòu)體繼承自System.ValueType,屬于值類(lèi)型

一、DateTime是值類(lèi)型還是引用類(lèi)型的探索

二、了解DateTime結(jié)構(gòu)體

三、DateTime.Now和DateTime.UtcNow是怎么計(jì)算出來(lái)的

一、DateTime是值類(lèi)型還是引用類(lèi)型的探索

1. 先編寫(xiě)測(cè)試代碼

將dateTime1賦值給dateTime2,然后改變dateTime1的值,如果dateTime2的的值也跟著改變,那么DateTime便是引用類(lèi)型,看看結(jié)果吧:

dateTime1增加了3天后,dateTime2仍然是2017/4/11,這已經(jīng)能初步說(shuō)明問(wèn)題了。

2. 為了進(jìn)一步確定結(jié)論,最可靠的方法是查看變量的地址,值類(lèi)型的話,dateTime1和dateTime2的地址應(yīng)該不同。

看來(lái)確實(shí)是不同的,DateTime是值類(lèi)型無(wú)疑了。

二、了解DateTime結(jié)構(gòu)體

轉(zhuǎn)到DateTime的定義,也可以看到DateTime確實(shí)是struct類(lèi)型,

看來(lái)前面的試驗(yàn)都是無(wú)用功了,但DateTime到底是怎樣的結(jié)構(gòu)體呢,主要有如下成員

這些成員里面最關(guān)鍵的是Ticks

Ticks的時(shí)間值以 100 毫微秒為單位,它的64位中,前兩位表示Kind,后面62位表示有多少個(gè)毫微秒。Kind用來(lái)指示 DateTime 結(jié)構(gòu)是表示本地時(shí)間、協(xié)調(diào)通用時(shí)間 (UTC) 還是 UTC 和本地時(shí)間都未指定。Kind 字段用于處理本地時(shí)間和 UTC 時(shí)間之間的轉(zhuǎn)換。

DateTime的值范圍在0001/1/1 00:00:00到9999/12/31 23:59:59之間

三、DateTime.Now和DateTime.UtcNow是怎么計(jì)算出來(lái)的

反編譯DateTime.Now如下

public static DateTime Now
{
  [__DynamicallyInvokable]
  get
  {
    DateTime utcNow = DateTime.UtcNow;
    bool isAmbiguousDst = false;
    long ticks = TimeZoneInfo.GetDateTimeNowUtcOffsetFromUtc(utcNow, out isAmbiguousDst).Ticks;
    long num = utcNow.Ticks + ticks;
    if (num > 3155378975999999999L)
    {
      return new DateTime(3155378975999999999L, DateTimeKind.Local);
    }
    if (num < 0L)
    {
      return new DateTime(0L, DateTimeKind.Local);
    }
    return new DateTime(num, DateTimeKind.Local, isAmbiguousDst);
  }
}

太復(fù)雜了啊看不懂,但可以看到大致的意思是先獲取DateTime.UtcNow,然后轉(zhuǎn)換為本地時(shí)間

再反編譯DateTime.UtcNow

public static DateTime UtcNow
{
  [__DynamicallyInvokable, SecuritySafeCritical]
  get
  {
    long systemTimeAsFileTime = DateTime.GetSystemTimeAsFileTime();
    return new DateTime((ulong)(systemTimeAsFileTime + 504911232000000000L | 4611686018427387904L));
  }
}

最后查閱GetSystemTimeAsFileTime()是Windows的API,作用便是獲取當(dāng)前的UTC時(shí)間

以上所述是小編給大家介紹的C#中的DateTime是值類(lèi)型還是引用類(lèi)型,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • C#獲取網(wǎng)頁(yè)源代碼的方法

    C#獲取網(wǎng)頁(yè)源代碼的方法

    這篇文章主要介紹了C#獲取網(wǎng)頁(yè)源代碼的方法,涉及C#基于自定義函數(shù)讀取網(wǎng)頁(yè)html代碼的方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-09-09
  • C#實(shí)現(xiàn)對(duì)二維數(shù)組排序的方法

    C#實(shí)現(xiàn)對(duì)二維數(shù)組排序的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)對(duì)二維數(shù)組排序的方法,實(shí)例分析了C#數(shù)組遍歷與排序的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • C#把整個(gè)文件內(nèi)容讀入字符串變量的方法

    C#把整個(gè)文件內(nèi)容讀入字符串變量的方法

    這篇文章主要介紹了C#把整個(gè)文件內(nèi)容讀入字符串變量的方法,實(shí)例分析了C#操作文件與字符串的相關(guān)技巧,需要的朋友可以參考下
    2015-07-07
  • 對(duì)c#中托的理解

    對(duì)c#中托的理解

    本篇文章,小編將為大家介紹關(guān)于對(duì)c#中托的理解,有需要的朋友可以參考一下
    2013-04-04
  • C#實(shí)現(xiàn)數(shù)據(jù)包加密與解密實(shí)例詳解

    C#實(shí)現(xiàn)數(shù)據(jù)包加密與解密實(shí)例詳解

    這篇文章主要介紹了C#實(shí)現(xiàn)數(shù)據(jù)包加密與解密的方法,是一項(xiàng)很實(shí)用的技能,需要的朋友可以參考下
    2014-07-07
  • C#中string用法實(shí)例詳解

    C#中string用法實(shí)例詳解

    這篇文章主要介紹了C#中string用法,非常詳細(xì)的總結(jié)了比較常見(jiàn)的關(guān)于C#中string的幾個(gè)常用方法,需要的朋友可以參考下
    2014-08-08
  • C#實(shí)現(xiàn)的二維數(shù)組排序算法示例

    C#實(shí)現(xiàn)的二維數(shù)組排序算法示例

    這篇文章主要介紹了C#實(shí)現(xiàn)的二維數(shù)組排序算法,涉及C#針對(duì)二維數(shù)組的遍歷、判斷、排序等相關(guān)操作技巧,需要的朋友可以參考下
    2017-12-12
  • C#獲取文件相關(guān)信息的方法

    C#獲取文件相關(guān)信息的方法

    這篇文章主要介紹了C#獲取文件相關(guān)信息的方法,涉及C#中FileInfo類(lèi)的相關(guān)使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-04-04
  • Quartz.Net使用方法詳解

    Quartz.Net使用方法詳解

    本文詳細(xì)講解了Quartz.Net的使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • C#中析構(gòu)函數(shù)、Dispose、Close方法的區(qū)別

    C#中析構(gòu)函數(shù)、Dispose、Close方法的區(qū)別

    本文詳細(xì)對(duì)比了C#中析構(gòu)函數(shù)、Dispose和Close方法的區(qū)別,三者都是釋放資源,本文介紹了他們各自的使用方法和使用場(chǎng)景,希望對(duì)大家有所幫助。
    2016-04-04

最新評(píng)論

响水县| 无为县| 达拉特旗| 美姑县| 斗六市| 金塔县| 东海县| 高唐县| 玉田县| 平罗县| 大渡口区| 昭平县| 伊金霍洛旗| 金堂县| 青冈县| 榕江县| 通河县| 盐津县| 深州市| 菏泽市| 江津市| 汽车| 铜川市| 德州市| 广南县| 迁安市| 阿荣旗| 杭锦旗| 北京市| 读书| 靖远县| 双城市| 杭锦后旗| 遂昌县| 三河市| 准格尔旗| 临猗县| 乐至县| 福安市| 通化市| 新巴尔虎右旗|