c 6 0 7 x新特性(一)

2022-04-14 13:31:38 字數 2316 閱讀 3077

記錄一些對寫**會有幫助,但是平時像不太到的新特性

在類初始化時,會使用後面的表示式初始化該屬性

public icollectiongrades  = new list();
這個和上乙個可能有點像,但是作用完全不同,這個屬性/函式的值,會在每次呼叫時重新計算,而不是初始化時

public override string tostring() => $", ";

//或者

public string fullname => $" ";

通過在using後增加static,可以直接引用命名空間中的靜態方法,而不用在前面帶上類名

using static system.math;
此後,可以直接引用sin/sqrt等方法,而不用寫上math.sin

原來如下操作

if (handler != null)

handler(this, eventargs);

可以被簡化為:

// preferred in c# 6:
這個是非常方便的特性,從傳統的基於位置的字串格式化

public string fullname

", firstname, lastname);

}}

通過在字串前增加$符號,可以直接在字串中帶入變數:

public string fullname => $" ";
try/catch語句除了根據異常型別,還能通過when操作符過濾額外條件:

}}nameof返回變數名稱的字串表達

if (isnullorwhitespace(lastname))

throw new argumentexception(message: "cannot be blank", paramname: nameof(lastname));

當然可以直接在字串中寫入固定的值,不過通過nameof,當通過vs重構變數名時,這裡的**編輯器會幫助自動修改,這是nameof的好處

這在之前的c#是不允許的。不過要小心,不要引入新的異常,要不原有異常就看不到了。。。

之前陣列型的集合可以被容易的初始化,而字典等非線性則不如陣列初始化那麼輕鬆,不過現在c#也支援了更為友好的初始化語法:

private dictionaryweberrors = new dictionary;
collection如果想使用集合初始化方式初始化乙個類,那麼類必須實現add方法

public class enrollment : ienumerable

public ienumeratorgetenumerator()

ienumerator ienumerable.getenumerator()

}//這在之前版本是不行的,因為enrollment類只有enroll,沒有add方法

var classlist = new enrollment()

;

而現在,通過將enroll對應到add方法,就可以了。

public static class studentextensions

static task dothings() 

task.run(dothings);

在之前版本,編譯器無法識別呼叫的是task.run(action)還是task.run(func()),會報錯

新版的編譯器能夠正確將其識別為task.run(func())了。

c#編譯出來的二進位制檔案,即使源**沒有改,也會因為新增時間戳、guid等每次獨立生成的資訊而有所不同

通過增加-deterministic選項,能讓編譯器每次生成完全一致的二進位制輸出

c 6 0新特性(一)

接近年底了,基本上沒什麼活了,就學點新東西,就想著了解下c 6.0的新特性。在code project上看到了一篇不錯的文章,就準備翻譯一下,順便照著學習學習。廢話不多說,直奔主題。眾所周知,c 6.0 是在visual studio 2015中引入的。在其他的幾個版本中同樣引入一些特性,比如在c ...

C 11新特性(一)

侯捷 c 11新特性 variadic templates uniform initialization initializer lists alias template 用例void print template typename t,typename.types void print const...

c 6 0新特性(一)

接近年底了,基本上沒什麼活了,就學點新東西,就想著了解下c 6.0的新特性。在code project上看到了一篇不錯的文章,就準備翻譯一下,順便照著學習學習。廢話不多說,直奔主題。眾所周知,c 6.0 是在visual studio 2015中引入的。在其他的幾個版本中同樣引入一些特性,比如在c ...