標籤: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新特性介紹記錄