C#7.0新特性

來源:互聯網
上載者:User

標籤:c#   ++   main   反射   img   style   tuple   variables   stat   

來源參考:https://docs.microsoft.com/zh-cn/dotnet/csharp/whats-new/csharp-7

【VS2017支援】

1.out 變數(out variables)

  以前out參數需要在調用方法外部提前被聲明,C#7.0允許out參數在方法參數傳遞中被聲明。

  舊寫法:

int num;if (int.TryParse("123", out num)){    Console.WriteLine(num);}else{    Console.WriteLine("Could not parse!");}

  新寫法:

if (int.TryParse("123", out int num)){    Console.WriteLine(num);}else{    Console.WriteLine("Could not parse!");}

  out參數在方法中聲明支援var隱式類型

2.元組(Tuples)

  一個方法有多個傳回型別值得解決方案,使用Tuples。

  舊寫法:

static void Main(string[] args){    var data = GetFullName();    Console.WriteLine(data.Item1);    Console.WriteLine(data.Item2);    Console.WriteLine(data.Item3);}static Tuple<string, string, string> GetFullName(){    return new Tuple<string, string, string>("a", "b", "c");}

  新寫法:[需要通過nutget擷取System.ValueTuple的引用]

static void Main(string[] args){    var data = GetFullName1();    Console.WriteLine(data.a);    Console.WriteLine(data.b);    Console.WriteLine(data.c);}static (string a, string b, string c) GetFullName1(){    return ("a", "b", "c");}

  解構元組擷取傳回值(多個):

static void Main(string[] args){    //不用var 定義解構元組    (string a, string b, string c) = GetFullName1();    Console.WriteLine(a);    Console.WriteLine(b);    Console.WriteLine(c);}static (string a, string b, string c) GetFullName1(){    return ("a", "b", "c");}

3.pattern matching(匹配模式)

  判斷類型時直接賦值。

  舊寫法:

object obj = 1;if (obj is int) //is判斷{    int num1 = (int)obj; //拆    int num2 = num1 + 10; //加10    Console.WriteLine(num2); //輸出}

 

  新寫法:[使用反射時,考慮使用這種寫法]

object obj = 1;if (obj is int num1)//判斷obj為int型,直接賦值給num1{    int num2 = num1 + 10;    Console.WriteLine(num2); //輸出}

 

  switch的新玩法:

static dynamic Add(object a){    dynamic data;    switch (a)    {        case int b:            data = b++;            break;        case string c:            data = c + "aaa";            break;        default:            data = null;            break;    }    return data;}

 

C#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.