国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C#6的新特性~

2019-11-14 16:00:52
字體:
來源:轉載
供稿:網友

原文地址

Mads Torgersen,微軟 C# 程序管理者,它發布了一個視頻,描述即將到來的下一個 C# 版本——C# 6。在 C# 6 的新特性之間,Mads 主要提到了 getter-only 屬性,拉姆達箭頭操作符,字符串插值(string interpolation) 等等。

首先,Mads 說,C# 6 不會改版 C# 的設計哲學,并且將提供很多小得特性,來幫助整潔代碼。

Getter-only 自動屬性

C# 6 允許定義不變的自動化屬性,例如,只支持一個 getter 方法的自動化屬性:

public class Point
{
    public int X { get; }
    public int Y { get; }
    public int ReadWrite { get; set; }
}

Getter-only 自動化屬性是只讀的,可以通過構造函數來賦值。

這個沒太明白,C# 6 之前的版本也有這個特性啊~

String 操作

字符串插值傳統的C#語法按 Mads 描述為“一種混亂且容易出錯”:

return String.Format("({0}, {1})", X, Y);

C# 6 將引入一個新的字符串插語法:

return "(/{X}, /{Y})";

單方法表達式的 Lamba 箭頭操作符(Lamba-arrow Operator

新的 lambda 箭頭操作符將簡化返回一個單獨表達式值的方法定義:

public override string ToString() => "(/{X}, /{Y})";
public double Dist => Sqrt(X * X + Y * Y);

按照 Mads 的說法,這將幫助減少大量“樣板式”代碼的鍵入。

Index 初始化器

在現在的 C# 中,index 設置器必須用一個單獨的語句賦值:

var result = new JObject();
result["x"] = X;
result["y"] = Y;

在 C# 6,可能用一個表達式來初始化對象:

var result = new JObject() { ["x"] = X, ["y"] = Y };

這將導致一個高簡潔和可讀性好的 ToJSon 方法的定義:

public JObject ToJson() => new JObject() { ["x"] = X, ["y"] = Y };

Null 傳播操作符(Null-PRopagating operators

Null 條件操作符是一個新特性,旨在檢查 null 值。因此,不是下面那樣檢查:

if (json != null &&
    json["x"] != null &&
    json["x"].Type == JTokenType.Integer)

C# 6 運行使用一個新的 ? 操作符,將計算緊跟著它表達式的一部分,只要它應用在一個非null對象,上述表達式就可以縮小到:

if (json?["x"]?.Type == JTokenType.Integer)

上面這幾個特性,微軟顯然吸收了開源社區的做法,比如,Groovy,讓代碼變得更加簡潔~

異常過濾(Exception filtering

異常過濾運行捕獲表達式,只要符合一個特定條件:

try
{ }
catch (ConfigurationException e) if (e.IsSevere)
{ }

Mads 說,這是一個更好的 catch-rethrow 語法,因為,以前,當重新拋出異常時,異常最初發生的地方將會丟失。

catch 和 finally 塊中的 Await

最后,在 catch 和 finally 塊中可以使用 await,這增加了在錯誤處理的靈活性。Mads 補充說,該特性被排除在 C# 6 之前的版本,因為,這個特性如何實現,那時還不明確。

try
{ }
catch (ConfigurationException e)
{ 
    await LogAsync();
}
finally
{
    await CloseAync();
}

最近發布的Xamarin.Studio 5.9增加了 C# 6 支持,改進了 Sketches,并帶來了新的調試器查看器及其它一些更新。C# 6 將在 Visual Studio 2015 中正式發布,并只在社區版本中提供。盡管如此,Xamarin.Studio 也已經支持 C# 6 的新特性。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 凌海市| 巨鹿县| 宁化县| 浮山县| 渭南市| 牡丹江市| 蓝山县| 墨玉县| 巴彦淖尔市| 云林县| 香港| 兰州市| 耿马| 罗甸县| 莱芜市| 陵水| 当雄县| 梁山县| 沧州市| 碌曲县| 百色市| 镶黄旗| 博白县| 贵阳市| 莫力| 大宁县| 清河县| 轮台县| 左权县| 集贤县| 桐庐县| 湖州市| 卓尼县| 贡嘎县| 穆棱市| 石河子市| 肇庆市| 荥阳市| 阳山县| 出国| 永定县|