C 6 0新加特性

2022-08-25 09:45:14 字數 2559 閱讀 8893

1、自動屬性的增強

1.1、自動屬性初始化 (initializers for auto-properties)

c#4.0下的果斷實現不了的。

c#6.0中自動屬性的初始化方式

只要接觸過c#的肯定都會喜歡這種方式。真是簡潔方便呀。

1.2、唯讀屬性初始化getter-only auto-properties

先來看一下我們之前使用的方式吧

public class customer

public customer(string firstname,string lastname)

}

再來看一下c#6.0中

public class customer

="aehyok";

public string lastname ="kris";

}

和第一條自動屬性初始化使用方式一致。

2、expression bodied function

members

2.1 用lambda作為函式體expression bodies on method-like members

public point move(int dx, int dy) => new point(x + dx, y + dy);
再來舉乙個簡單的例子:乙個沒有返回值的函式

public void print() => console.writeline(firstname + " " + lastname);
2.2、lambda表示式用作屬性expression bodies on property-like function members

public override string tostring()

現在c#6中

public class user

public string lastname

public override string tostring() => string.format("——", firstname, lastname);

public string fullname => firstname + " " + lastname;

}

3、引用靜態類using static在using中可以指定乙個靜態類,然後可以在隨後的**中直接使用靜態的成員

4、空值判斷null-conditional operators  

直接來看**和執行結果

通過結果可以發現返回的都為null,再也不像以前那樣繁瑣的判斷null勒。

5、字串嵌入值

在字串中嵌入值

之前一直使用的方式是

現在我們可以簡單的通過如下的方式進行拼接

6、nameof表示式nameof expression

s 在方法引數檢查時,你可能經常看到這樣的**(之前用的少,這次也算學到了)

public static void addcustomer(customer customer)

}

裡面有那個customer是我們手寫的字串,在給customer改名時,很容易把下面的那個字串忘掉,c#6.0 nameof幫我們解決了這個問題,看看新寫法

public static void addcustomer(customer customer)

}

7、帶索引的物件初始化器index initializers直接通過索引進行物件的初始化,原來真的可以實現

通過這種方式可以發現字典中只有三個元素,所以也就只有這三個索引可以訪問額,其他型別的物件和集合也是可以通過這種方式進行初始化的,在此就不進行一一枚舉了。

8、異常

過濾器 (exception filters)  

先來看乙個移植過來的方法

try;}

catch (argumentnullexception e)

}

在微軟的文件中還給出了另一種用法,這個異常會在日誌記錄失敗時拋給上一層呼叫者

private static bool log(exception e)

static void main(string args)

catch (exception e)

}console.readline();

}

9、catch和finally 中的 await —— await in catch and finally blocks在c#5.0中,await關鍵字是不能出現在catch和finnaly塊中的。而在6.0中

try

catch (resourceexception e)

finally

10、無引數的結構體建構函式

—— parameterless constructors in structs 

c 6 0新特性(一)

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

c 6 0新特性(一)

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

C 6 0 新特性 二

有過正確實現結構經驗的所有 net 開發人員無疑都為乙個問題所困擾 需要使用多少語法才能使型別固定不變 為 net 標準建議的型別 此問題實際上是唯讀屬性存在的問題 定義為唯讀的支援字段 建構函式內支援欄位的初始化 屬性的顯式實現 而非使用自動屬性 返回支援欄位的顯式 getter 實現 所有這一切...