C 6 的新特性

2021-09-06 23:18:09 字數 2014 閱讀 9599

首先,mads 說,c# 6 不會改版 c# 的設計哲學,並且將提供很多小得特性,來幫助整潔**。

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

class point

public

int y

public

int readwrite

}

getter-only 自動化屬性是唯讀的,可以通過建構函式來賦值。

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

字串插值傳統的c#語法按 mads 描述為「一種混亂且容易出錯」:

return string.format("(, )", x, y);

c# 6 將引入乙個新的字串插語法:

return

"(\, \)";

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

public

override

string tostring() => "(\, \)";

public

double dist => sqrt(x * x + y * y);

按照 mads 的說法,這將幫助減少大量「樣板式」**的鍵入。

在現在的 c# 中,index 設定器必須用乙個單獨的語句賦值:

var result = new jobject();
result["x"] = x;
result["y"] = y;

在 c# 6,可能用乙個表示式來初始化物件:

var result = new jobject() ;

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

public jobject tojson() => new jobject() ;

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

if (json != null &&
json["x"] != null &&
json["x"].type == jtokentype.integer)

c# 6 執行使用乙個新的 ? 操作符,將計算緊跟著它表示式的一部分,只要它應用在乙個非null物件,上述表示式就可以縮小到:

if (json?["x"]?.type == jtokentype.integer)

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

異常過濾執行捕獲表示式,只要符合乙個特定條件:

try
catch (configurationexception e) if (e.issevere)

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

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

try
catch (configurationexception e)
finally

最近發布的xamarin.studio 5.9增加了 c# 6 支援,改進了 sketches,並帶來了新的偵錯程式檢視器及其它一些更新。c# 6 將在 visual studio 2015 中正式發布,並只在社群版本中提供。儘管如此,xamarin.studio 也已經支援 c# 6 的新特性。

隨筆分類 C 6 新增特性

c 6.0中引入的基本特性總結 c 6 7 索引初始化器 摘要 0.目錄 c 6 新增特性目錄 1.老版本的 早c 3中引入的集合初始化器,可是讓我們用上面的語法來在宣告乙個字典或者集合的時候立即初始化一些項進去,其實在c 3中這是個語法糖,實質編譯後的結果是呼叫字典或者集合的add方法逐一新增這些...

C 6和 VB 12的最新特性列表

隨著下個版本的c 發布日逐漸臨近,那些還沒有完成的特性必須被砍掉。最近從特性列表中被砍掉的特性包括主要建構函式 primary constructor 和宣告表示式 declaration expression mads torgersen寫道 u0026 xd n u0026 xd n u0026...

C6 定向越野

為了鍛鍊身體,某楠參加了乙個定向越野比賽,定向越野是利用地圖和指北針導航的一項競技運動,通常由起點出發,在多個點標處打卡,再返回終點。但是非酋某楠的指北針居然是壞的,所以只能靠記住來時的方向和各個點的座標來判斷下一步。現在希望你能夠幫忙判斷下一步是左轉還是右轉。對於每次轉彎輸出乙個字元,左轉輸出 l...