c#6.0與7.0新特性介紹記錄

來源:互聯網
上載者:User

標籤:out   類型   IV   readline   ssi   就是   傳參   擴充   read   

c#發展史

引用地址:https://www.cnblogs.com/ShaYeBlog/p/3661424.html

6.0新特性

1.字串拼接最佳化

    文法格式:$”string {參數}”  

    解釋:以$符號開頭開始字串,其中以{}來進行傳參,可以多個參數累加

    例如:var results = $"Hello {Name}";

2.null檢測運算子

    文法格式:【 ?.】

    解釋:需要判斷的對象值後面跟隨?號符號直接進行判斷是否為空白,然後條件不為空白後需要執行的在“.”之後執行

    例如:

 

  Program pro = new Program();                Console.WriteLine(pro?.GetCnblogsSite()); public  string GetCnblogsSite()        {            return "http://www.cnblogs.com/yinrq";        }

 

3.自動化屬性

    文法格式:attribute{get;set}="";

    解釋:對象屬性後面直接可以進行賦值操作。像普通賦值一樣。

    例如:public string name {get;set}=“張三”;

4.運算式方法體

    文法格式:=》

    解釋:一句話的那種方法體,可以使用箭頭函數,不需要大括弧,更加簡便

    例如: public ActionResult index ()=> View();

5.引用靜態類

    解釋:可以直接引用靜態類

    例如:using static System.Math;

6.帶索引的對象初始化器

    解釋:就是形如字典那種形式可以直接通過索引初始化

    例如:var dic = new Dictionary<int, string> { [0]="第一個值",[1]= "第二個值"};

7.catch和finally 中使用await

    解釋:在5.0中await是不能在catch和finnaly塊中使用的,在6.0移除了此限制。

8.out參數寫法

   例如:int.TryParse("123", out int x);   可以直接用的時候才定義

9.結構體可以包含無參函數

    解釋:在以前結構體是不可以包含顯式的無參建構函式的,現在可以了

 7.0新特性

1.元組

    文法格式:Tuple

    解釋:可以建立不同的類型到一個集合中,然後進行返回,返回使用Item1,Item2....你以為就是這些東西嗎,錯瞭然這是4.0的東西了,現在7.0又給我們進行了最佳化。不過需要引用System.ValueTuple

    例如:

  static void Main(string[] args)        {            var data=GetFullName();            Console.WriteLine(data.a); //可用命名擷取到值            Console.WriteLine(data.b);            Console.WriteLine(data.c);            Console.ReadLine();        }        //方法定義為多個傳回值,並命名        private static (string a,string b,string c) GetFullName()        {            return ("a","b","c");        }
View Code

    又例如:

static void Main(string[] args)        {           //定義解構元組            (string a, string b, string c) = GetFullName();            Console.WriteLine(a);            Console.WriteLine(b);            Console.WriteLine(c);            Console.ReadLine();        }        private static (string a,string b,string c) GetFullName()        {            return ("a","b","c");        }
View Code

    在補充一下原寫法形式

 //元組資料建立        public Tuple<int, string> GetTuple()        {                     return Tuple.Create(1, "001");        } //擷取元組值        var result = GetTuple();        Console.WriteLine(result.Item1);        Console.WriteLine(result.Item2);
View Code

 2.匹配模式

    2.1針對is的小擴充

        格式:a is type b

        解釋:參數a是不是這個類型如果是就賦值給b然後在使用b做操作

        例如:object a = 1;if (a is int c)Console.WriteLine(c);

    2.2switch的小擴充

        格式 :case  type a:  以及篩選值的case type a when a<0:

        解釋:case可以針對類型進行匹配和根據類型匹配後在進行條件式篩選

3.ref的改動

    解釋:ref在以前只是用作於參數,在7.0中ref可以作為本地變數和傳回值使用。

4.局部函數

    解釋:與局部變數類似,只在特定的函數中可以訪問的函數。有點類似於func委託的感覺可以在內部定義一個局部方法臨時使用,具體區別還沒搞清除。

                int a = 1;                int add(int c)                {                    return c + 1;                }                Console.WriteLine(add(a));

5.運算式方法體擴充

    解釋:在6.0中一句話方法可以簡寫,但是建構函式,解構函式,屬性訪問器不可以,在7.0對此進行了擴充

    例如:

// 建構函式的運算式寫法public CaCheContext(string label) => this.Label = label;// 解構函式的運算式寫法~CaCheContext() => Console.Error.WriteLine("Finalized!");private string label;// Get/Set屬性訪問器的運算式寫法public string Label{    get => label;    set => this.label = value ?? "Default label";}

6.數值文字文法改進

    格式:_

    解釋:運行數值中間使用“_”分割符,完全是為了可讀性。沒有其他實際意義。

 

c#6.0與7.0新特性介紹記錄

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.