您的位置: 旅游網(wǎng) > 八卦 >> 兒子

    雜項技術(shù)以及語言的未來發(fā)展

    發(fā)布時間:2021-10-26 07:19:02

    屬性訪問器保護級別的變化  C# 2.0 允許我們對一個屬性的get和set訪問器使用不同的訪問級別修飾符:

    class Customer

    {

    private string name;

    ...

    public string Name

    {

    get{return ;}

    internal set(=value;}

    }

    ...

    }

    一些注意點

    屬性訪問器(get或set)上應(yīng)用的訪問修飾符必須“小于”屬性上應(yīng)用的訪問修飾符;“小于”的意思即“更嚴格”,例如protected小于public。

    只能在一個屬性訪問器(get或set)上指定比屬性上的訪問修飾符“更小”的訪問修飾符。

    對于接口中屬性的聲明,不能給屬性訪問器(get或set)指定任何訪問修飾符,只能默認為public。

    屬性訪問器保護級別的變化規(guī)則完全適用于C#的索引器。

    ---------------------------------------------

    名稱空間別名限定符的引入

    C# 2.0 允許我們使命名空間別名限定符(::)來避免不同命名空間中類型名稱沖突的問題:

    using SC = llections;

    using ZC = llections;

    class Program

    {

    static void main()

    {

    ZC::ArrayList list = new ZC::ArrayList();

    ...

    趕上百度大更新了 }

    }

    一些注意點

    當使用命名空間別名限定符(::)時,如果ZC:ArrayList,編譯器可以確保這是一個只適用于“名稱空間別名”的限制符,不會辨析為其他類型、或者成員限定符(.)。

    關(guān)鍵字global可以放在命名空間別名限定符(::)的左邊,它使得編譯器只去搜索那些所有的命名空間,而不會去搜索其他的類型、或成員。

    盡可能地使用命名空間別名限定符(::),而減少使用點號(.)這樣的通配限定符。

    ---------------------------------------------

    pragma指示符的引入

    C# 2.0 允許我們使用命名空間別名限定符(::)來避免不同命名空間中類型名稱沖突的問題:

    class program

    {

    [Obsolete]

    static void Foo(){...}

    static void Main()

    {

    #pragma warning disable 612

    Foo();

    #pragma warning restore 612

    }

    }

    幾個注意點

    目前pragma指示符只支持#pragma warning

    #pragma warning disable 可以禁止掉任何編譯器警告信息。

    #pragma warning restore 可以恢復(fù)被disable掉的任何編譯器警告信息。

    可以在disable和restore后面跟上具體的警告代碼號,從而來禁止或者恢復(fù)特定的警告信息。

    #prama是一個編譯預(yù)處理功能,不影響任何代碼運行機制。

    ---------------------------------------------

    Conditional特性類的引入

    C# 2.0 允許我們使用Conditional特性類來告訴編譯器根據(jù)“特定的預(yù)定義指示符條件”來在類上應(yīng)用特性。

    #define DEBUG

    using System;

    using agnostics;

    [Conditional(\"DEBUG\")]

    public class TestAttribute : Attribute{}

    [Test]

    class MyClass{}

    幾個注意點

    如果定義了條件指示符,如#define DEBUG,那么編譯器將在MyClass類上應(yīng)用TestAttribute特性。

    如果沒有定義條件指示符,如#undef DEBUG,MyClass類照樣可以正常使用,但是其上將不在應(yīng)用TestAttribute特性。

    注意區(qū)別C# 2.0 中的Conditional特性類和C# 1.0中的Conditional特性方法。

    定長buffer的引入

    C# 2.0 引入定長來使得我們可以在結(jié)構(gòu)里聲明C風(fēng)格的數(shù)組,從而更加方便地實現(xiàn)托管代碼和非托管代碼的互操作:

    unsafe struct MyClass

    {

    public fixed int x[5];

    public fixed int y[10];

    public fixed int z[100];

    }

    幾個注意點

    定長buffer只能使用在unsafe代碼的上下文中,不可以在非unsafe的代碼中使用。

    使用定長buffer所定義的字段在結(jié)構(gòu)類型的實例對象中將按照它們的聲明順序來進行內(nèi)存布局。

    注意區(qū)別unsafe代碼中的定長buffer和我們通常使用的托管數(shù)組。

    定長buffer主要應(yīng)用在托管代碼和非托管代碼互操作的情況,除此之外,我們一般使用托管數(shù)組。

    ---------------------------------------------

    C# 3.0 與未來發(fā)展

    C# 2.0 的核心機制在于泛行編程的引入,它賦予了類型參數(shù)式多態(tài)的能力,將對今后的C#代碼構(gòu)造有重要影響。

    研發(fā)中的C# 3.0 將XML、SQL兩中數(shù)據(jù)處理技術(shù)引入到C#這樣的強類型語言中,極大地豐富了C#語言的數(shù)據(jù)處理能力,是一個極具遠見的創(chuàng)新。

    C#語言的發(fā)展越來越多體現(xiàn)融合“設(shè)計模式+庫”的思想,“語言的發(fā)展就是庫的發(fā)展”。

    查看本文來源

    石嘴山白癜風(fēng)醫(yī)院哪家好
    一品紅
    銀川陰道炎治療多少錢
    猜你會喜歡的
    猜你會喜歡的
    主站蜘蛛池模板: 欧美精品v国产精品v日韩精品| 高清不卡毛片免费观看| 成人羞羞视频网站| 亚洲人成网站免费播放| 精品一区二区三区在线观看视频| 国产手机在线视频放线视频| a级毛片免费网站| 日日夜夜操视频| 亚洲人成伊人成综合网久久| 粗暴hd另类另类| 国产亚洲欧美日韩精品一区二区 | jizz中国视频| 日产中文字乱码卡一卡二视频| 亚洲国产天堂久久综合| 男女污污在线观看| 国产乱子伦手机在线| 亚洲精品一二区| 夜夜精品视频一区二区| 中文字幕一精品亚洲无线一区| 曰韩人妻无码一区二区三区综合部 | 欧美日韩另类综合| 在线日本妇人成熟| 三级理论中文字幕在线播放| 日本高清视频色wwwwww色| 亚洲午夜久久久影院| 激情国产AV做激情国产爱| 午夜精品久久久久久毛片| 韩国v欧美v亚洲v日本v| 国产精品一区二区三区高清在线| 99精品国产在热久久| 性欧美大战久久久久久久| 久久人人爽人人爽人人片av麻烦| 极品尤物一区二区三区| 亚洲欧美日韩精品专区卡通| 白嫩极品小受挨cgv| 四虎影视在线永久免费看黄 | 国产极品粉嫩交性大片| 国产精品理论电影| 99久久国产免费中文无字幕| 好男人官网资源在线观看| 中文字幕亚洲一区二区va在线|