亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

深入探討C#中的const、readonly關鍵字

2020-01-24 02:31:48
字體:
來源:轉載
供稿:網友

首先不可否認,這些在面試上會經常被面試官問起,但是你回答的讓面試官滿意嗎?當然如果你知道了這些原理,或許你就不

怕了。既然說到了原理,我們還是從MSDN說起。

一:值得推敲的幾個地方

1.先來看看msdn上面對const是怎么說的,我們會看到。不能修改,編譯時常量這些關鍵性信息。

Q:  const為什么不能被修改。

A:這個很簡單,很多教科書上面都說,當編譯器編譯時,會將常量的值保存在該程序集的元數據中,下面我們做個實例

看一看。

①:新建一個projectA。

復制代碼 代碼如下:

// ProjectA
public class TestClass
{
     public const int CTRIP = int.MaxValue;
}

再建一個MainProject,引用下projectA。

復制代碼 代碼如下:

using System;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(TestClass.CTRIP);

        Console.Read();
    }
}


然后我們把mainproject運行起來。

既然我把mainproject跑起來了,并且也引用了Test.dll,剛才也說了,編譯的時候會把常量值保存在程序集的元數據中,那我們

就找一找,打開ILdasm.exe,并且Ctrl+M。

很可惜,我并沒有找到Ctrip的符號,也沒有找到int.MaxValue,也沒有找到所謂的0x7fffffff,倒是找到了一個Assembly的一些版本信息的元數據,那么這時候你可能會疑惑了,究竟const的值有沒有保存到Assembly里面去呢?很簡單的一個驗證方法就是,把Mainproject下面bin中的Test.dll刪除掉,看看會有怎么樣的奇跡發生。

②: 聰明的你應該想到了,既然運行Demo.exe的時候不再加載Test.dll,而是直接從Demo的Assembly里面獲取const值,

那是不是會有斷層的事情發生,也就是版本不一致的情況,比如我已經修改了const值,然后把編譯好的dll拷貝到Mainproject的bin目錄下,直接運行Demo.exe,會不會出現MainProject讀不到修改后的const值呢?這里我將const改成 int.MinValue。

下面我們可以試試看。

復制代碼 代碼如下:

// ProjectA
public class TestClass
{
    public const int CTRIP = int.MinValue;
}

    

好了,看到上面的結果,就進一步佐證了剛才的說法,const確確實實是保存在Assembly的元數據中,這里還要順便提示一下,Enum本質上是const,所以它也存在我剛才說的斷層的問題,說到這里,我想你對const的原理應該比較熟悉了,現在我們來看看Question的問題。既然是元數據,那什么是元數據?“描述數據的數據” 叫做元數據,既然它是基礎的描述性數據,那么在定義好后是決對不能改變的,這個定義時也就是msdn說的編譯時,是不是so easy呢?

Q:  const為什么要做成靜態的,而不是做成實例的

A:  其實通過對第一個Question的分析,很多東西我們應該都會豁然開朗,因為存在斷層的問題,那么最好的方法就是const的值

永遠也不要變,這樣就可以避免問題的發生,既然是永遠都不變的東西,當然是跟著“類型”走比跟著“實例”走要好的多,你說對不對,因為static是個小緩存,沒必要new一下才產生。。。

Q: readonly字段只能在ctor中初始化嗎?

A:這個問題蠻有意思的,我們知道readonly的意思就是只讀字段的意思,我們知道一般的字段具有可讀寫的功能,

先還是看看編譯器怎么說。

從編譯器上可以看到,確實readonly的初始化還可以在“變量初始化”的時候進行初始化,那么這樣說Question的答案應該就是否定的,但是真的是如此嗎?我們都知道有一個東西叫做“語法糖”,而且經常是編譯器提供給我們用的,所以真正的想看到發生了什么,只能用ILDasm.exe 穿透編譯器,看看到底發生了什么。

從IL中可以看到,真的就是編譯器的語法糖,本質上都是在ctor中初始化的,所以說,看問題千萬不要看表面。

注:Stsfld 用來自計算堆棧的值替換靜態字段的值。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩欧美在线视频| 亚洲free性xxxx护士hd| 91沈先生在线观看| 日韩电视剧免费观看网站| 亚洲自拍偷拍一区| 日韩精品在线观看网站| 最近的2019中文字幕免费一页| 亚洲福利精品在线| 97视频在线免费观看| 亚州欧美日韩中文视频| 黑人巨大精品欧美一区免费视频| 日韩亚洲一区二区| 久久久之久亚州精品露出| 7777kkkk成人观看| 国产亚洲激情在线| 国产91免费看片| 日韩精品视频在线观看免费| 青青草99啪国产免费| 欧美日韩加勒比精品一区| 亚洲精品xxx| 日韩欧美在线第一页| 亚洲丝袜在线视频| 欧美激情2020午夜免费观看| 亚洲女人天堂网| 精品久久久久久久久中文字幕| 美女视频久久黄| 国产精品久久久久久久午夜| 亚洲精品国产免费| 久久精品免费电影| 国产精品视频午夜| 国产精品久久久久久av福利软件| 亚洲成年人影院在线| 国产精品www色诱视频| 亚洲一区二区久久久| 九九九久久久久久| 亚洲国产日韩欧美综合久久| 最近更新的2019中文字幕| 亚洲欧美在线一区二区| 国产精品美女无圣光视频| 精品视频偷偷看在线观看| 国模极品一区二区三区| 国产精品美女免费视频| 日韩激情av在线播放| 亚洲国产欧美一区二区三区同亚洲| 国产精品一香蕉国产线看观看| 亚洲第一男人天堂| 亚洲免费精彩视频| 最近2019年中文视频免费在线观看| 青草青草久热精品视频在线网站| 日本乱人伦a精品| 欧美猛少妇色xxxxx| 国产精品久久一区主播| 一区二区在线免费视频| 国产成人精品日本亚洲专区61| 国产欧美一区二区三区久久人妖| 国产精品福利在线观看| 国产精品视频大全| 国产精品三级久久久久久电影| 57pao成人永久免费视频| 91伊人影院在线播放| 欧美日韩激情小视频| 2018国产精品视频| 92福利视频午夜1000合集在线观看| 中文字幕综合一区| 这里只有精品在线观看| 久久久久久久久久久久久久久久久久av| 97精品在线视频| 亚洲精品国偷自产在线99热| 国语自产精品视频在线看一大j8| 69av在线视频| 久久久精品中文字幕| 国产午夜精品一区二区三区| 日韩激情视频在线播放| 97精品一区二区三区| 欧美孕妇毛茸茸xxxx| 国产一区二区三区在线观看网站| 久久精品国产一区二区三区| 国产午夜精品麻豆| 久热精品视频在线观看一区| 久久亚洲精品国产亚洲老地址| 欧美在线日韩在线| 欧美色视频日本高清在线观看| 45www国产精品网站| 国产亚洲一级高清| 91在线国产电影| 韩国日本不卡在线| 成人xxxx视频| 亚洲国产日韩欧美综合久久| 最近中文字幕2019免费| 国产一区二区三区四区福利| 热99久久精品| 久久综合色88| 亚洲一级黄色片| 欧美激情videoshd| 国产精品视频专区| 欧美日韩成人在线播放| 欧美精品电影免费在线观看| 欧美视频不卡中文| 国产欧美精品日韩精品| 国产美女被下药99| 在线观看日韩视频| 午夜精品一区二区三区av| 欧美专区在线视频| 国产亚洲一区二区在线| 九色精品免费永久在线| 日韩欧美亚洲综合| 久久精品小视频| 国产欧美婷婷中文| 91大神福利视频在线| 国模视频一区二区三区| 久久精品成人一区二区三区| 国产精品亚洲综合天堂夜夜| 日韩欧美中文字幕在线播放| 精品国产一区二区三区久久狼5月| 国产精品video| 国外色69视频在线观看| 日本电影亚洲天堂| 国产香蕉一区二区三区在线视频| 日韩一区二区三区xxxx| 日本韩国欧美精品大片卡二| 国产精品福利在线观看网址| 日韩电影中文字幕一区| 亚洲三级免费看| 成人欧美一区二区三区在线湿哒哒| 亚洲精品国产综合区久久久久久久| 亚洲无限乱码一二三四麻| 国产精品视频一区国模私拍| 欧美成人激情视频| 黄网动漫久久久| 成人伊人精品色xxxx视频| 亚洲人成电影在线观看天堂色| 国语自产精品视频在线看抢先版图片| 成人黄在线观看| 日韩美女视频免费在线观看| 91九色国产社区在线观看| 日韩一二三在线视频播| 久久久女人电视剧免费播放下载| 午夜精品一区二区三区av| 性欧美xxxx交| 国模视频一区二区| 日韩美女写真福利在线观看| 亚洲女人天堂成人av在线| 国产欧美欧洲在线观看| 日韩中文在线视频| 最近2019免费中文字幕视频三| 热久久美女精品天天吊色| 色偷偷91综合久久噜噜| 国内外成人免费激情在线视频| 国产精品久久久久高潮| 精品一区二区三区四区在线| 在线国产精品播放| 91av视频在线| 欧美日本啪啪无遮挡网站| 夜夜嗨av色一区二区不卡| 国内精品模特av私拍在线观看| 久久久久久久久久av| 中文字幕自拍vr一区二区三区| 亚洲bt天天射| 亚洲第一区中文99精品| 欧美午夜www高清视频| 欧美高清一级大片| 国产精品国模在线| 国产在线拍揄自揄视频不卡99| 自拍偷拍亚洲在线|