選擇性參數、具名引數、.NET的特殊類型、特性

來源:互聯網
上載者:User

標籤:本質   建立   uid   rod   inf   沒有   read   false   修飾符   

1、選擇性參數和具名引數
    1.1選擇性參數
        文法:
            [修飾符] 傳回型別 方法名(必選參數n,選擇性參數n)
        注意:
            1.必選參數可以不存在,也可以有多個;選擇性參數可以有1個或多個
            2.選擇性參數必須放在必選參數之後
            3.選擇性參數在定義時需要賦初始值
            4.選擇性參數之間也需要使用,進行分隔
            5.調用選擇性參數時,不能跨參數賦值
    1.2具名引數
        文法:
            方法名(參數1名:參數1值,...)
        優勢:
            1.可以指定參數的名字來進行參數賦值
            2.可以跨參數賦值
2、.NET的特殊類型
    2.1隱式類型
        關鍵字var:使用var聲明的變數稱為隱式類型變數
        注意:
            1.使用var,必須在聲明變數時同時賦值
            2.隱式類型在聲明賦值之後就不能夠再給它賦予一個其他類型的值
    2.2匿名型別
        文法:var stu=new {Name="張三",Age=18,Gender="男"};
        匿名型別的建立:通過new運算子和對象初始值來建立匿名型別,不需要定義屬性的類型,屬性類型由屬性值推斷出來
        匿名型別的兩種用法:
            1.使用var定義匿名型別變數
            2.直接作為方法的參數值進行傳遞,典型的用途就是routes.MapRoute()方法的defalut參數
        通過對象使用資料:
            var stu=new {object.Name,object.Age};    預設將所使用對象的屬性名稱作為其屬性名稱
        注意:
            匿名型別中屬性的賦值是一次性的,即匿名對象的屬性是唯讀
    2.3dynamic類型
        動態類型對象:
            dynamic personl=new Student{Name="張三",Age=20};
            personl.Introduce();
        注意:
            1.調用動態類型的成員時,並不做編譯時間檢查,而是在運行時檢查;所以調用時沒有快捷提示
        dynamic類型是弱類型,可以直接賦任意類型的值
        dynamic與var關鍵字的區別:
            var:
                1.只能用於局部變數,不能用於欄位、參數
                2.聲明的同時必須初始化
                3.變數的類型在編譯時間就確定了
            dynamic:
                1.可用於類型的欄位、方法參數、方法傳回值,可用於泛型型別參數等
                2.可以賦值或被賦值任何類型,並不需要強制類型轉換
        dynamic有哪些應用場合?
            dynamic動態類型的用法主要有:
                1.多語言混合編程,如IronRuby和IronPython
                2.簡化反射的操作
                3.簡化COM互操作
                4.處理HTML DOM對象
    2.4可空類型
        文法:
            System.Nullable<類型> 變數名
            類型?變數名
            (類型指的是實值型別)
        作用:
            1.可用類型允許變數包含未定義的值,多用於與資料庫的互動中
            2.可空類型就是為瞭解決非空類型預設值的問題
        注意:
            當把一個可空類型賦給一個非空類型時,將引發編譯錯誤
        以下屬性可配合可空類型解決問題:
            1.DBnull.Value:表示資料庫的null值
                案例:int? Age    user.Age=reader["Age"]!=DBnull.Value?(int?)reader["Age"]:null;
            2.HasValue:屬於bool類型,當變數包含非空值時,它被設定為true
            3.Value:類型與其對應的實值型別相同,如何HasValue為true,則說明Value包含有意義的值。如果HasValue為false,則訪問Value將引發InvalidOperaionException異常
        使用"??"運算子分配預設值:
            int? num=null;
            int num2=num??0;
            "??"運算子會首先判斷左運算元是否為null,如果為null則返回"??"右面給出的預設值,否則返回左運算元
3、特性
    文法:[特性名] 或[特姓名(參數值...)]
    C#中的特性主要的特點:
        1.為目標元素(可以是程式集、類、屬性、方法等)加入附加資訊,類似於注釋
        2.特性本質上也是一個類,直接或間接地繼承自Attribute類
    注意:
        1.特性命名都以Attribute結尾,使用時可以省略,.NET會自動找到對應的屬性類別
        2.同一目標元素可以使用多個
        3.特性名必須放在[]之間,()之間的參數由屬性類別的建構函式確定
    1.特性用於方法
        ObsoleteAttribute:它用於標記一個不再使用的程式元素
            [Obsolete("不要使用舊的方法,請使用新的方法",false)]
                第1個參數是string類型的文字說明,解釋。
                第2個參數是告訴編譯器是否把使用這個方法視為一種錯誤,如果值為true,編譯時間會提示錯誤;如果為false,程式不會報錯,但編譯器會產生一個警告
        Obsolete特性就是ObsoleteAttribute類,繼承自 Attribute類,它包含建構函式,也包含屬性成員,根據Obsolete特性的定義,在使用它時可以有多種文法形式:
            [Obsolete]和[Obsolete("不要使用舊的方法,請使用新的方法",false)]
            [Obsolete]和[Obsolete()]是等價的
    2.特性應用到類上:
        [Serializable]:表示支援序列化
            序列化,主要是將對象的狀態資訊轉換為可以儲存或傳輸的形式
    3.特性應用到程式集上
        在所有.NET項目中都包含應用到程式集上的特性,它們出現在所有的項目中的"Properties\AssemblyInfo.cs"檔案夾中
            AssemblyTitle:表示程式集的標題
            AssemblyDescription:用來描述程式集資訊
            AssemblyCompany:用來定義公司
            AssemblyProduct:用來定義產品
            AssemblyCopyright:用來聲明版本
            GuidL:用來定義程式集唯一的編號
            AssemblyVersion:定義程式集的版本
        是不是一個目標元素(類、屬性)只能有一個特性?
            不一定,C#中的目標元素可以有多個特性
       

選擇性參數、具名引數、.NET的特殊類型、特性

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.