c 6 0新特性(一)

2021-09-08 17:48:42 字數 3644 閱讀 5836

接近年底了,基本上沒什麼活了,就學點新東西,就想著了解下c# 6.0的新特性。在code project上看到了一篇不錯的文章,就準備翻譯一下,順便照著學習學習。廢話不多說,直奔主題。

眾所周知,c# 6.0 是在visual studio 2015中引入的。在其他的幾個版本中同樣引入一些特性,比如在c# 3.0中引入了linq,在c# 4.0中引入了動態型別dynamic,在c#5.0中引入async和await等等。

以下是c# 6.0的幾種改善的新的語法:

1、using static:使用static

2、auto property initializers:自動屬性初始化

3、index initializers:索引初始化

4、string interpolation:字串插入

5、expression bodied members

6、getter only auto properties:唯讀自動屬性

7、exception filters:異常過濾器

8、null conditional operators:null條件操作符

9、declaration expressions:宣告表示式

這是一件在你的程式設計生涯中非常有用的乙個特性。現在你可以通過using 關鍵字訪問類的屬性和方法了。實現這個,你只需要在你類的命名空間前using之後static關鍵字就可以了。

using

static system.console;

當我們使用using引用了system.console這個類。那麼我們就可以訪問這個類的所有屬性和方法。下面看乙個在c# 6.0之前和之後我們是如何做的例子:

before c# 6.0

using

system;

namespace

cplusplusnewfeature}}

在c# 6.0之前,如果我們要使用wrilteline()方法,我們使用console.writeline()。如果沒有引用console這個類,我們是無法訪問這個方法的。

c# 6.0中

using

system;

using

static

system.console;

using

static

cplusplusnewfeature.myclass;

namespace

cplusplusnewfeature

}static

class

myclass}}

c# 6.0在使用這個類的時候並不需要每次都引用這個類。我們只需要在using中宣告這個類,那麼我們就可以訪問到它。

當然,我們也可以引用其他的類並訪問它的成員。

在上面的例子中,我們使用了myclass類的hello()方法。

static

class

myclass

}

在這裡我們使用using引入了命名空間了,如下所示:

using

static cplusplusnewfeature.myclass;

我們使用屬性訪問內部成員。屬性有setter和getter方法。在c# 6.0之前,我們並不能直接為屬性賦值。如果真要這麼做,我們只能通過屬性對應的字段來初始化。但是c# 6.0提供更靈活的方式。

通過c# 6.0我們可以在定義屬性的時候直接為它賦值。

before c# 6.0

之前我們通過建構函式初始化屬性。看下面的例子,在這裡我們建立了多個屬性,並在建構函式中為他們賦值。

using

system;

using

static

system.console;

namespace

cplusplusnewfeature

}public

class

employee

public

string firstname

public

string lastname

public

string fullname

public

employee()

", firstname, lastname);}}

}

c# 6.0中但是在c#6.0中非常方便,我們不必擔心怎麼、在哪兒初始化屬性值。你可以直接在屬性後面通過=asign指定屬性的值。這種方式不會引發異常並且可以正常執行。在下面的例子中,我們可以看到emplyeeid,firstname,lastname初始化。

using

system;

using

static

system.console;

namespace

cplusplusnewfeature

}public

class

employee

=guid.newguid();

public

string firstname = "

mukesh";

public

string lastname = "

kumar";

public

string fullname

", firstname, lastname); } }}}

c#6.0提供了一種新的初始化集合的方式。你可以建立想字典,hashtable一樣的集合。眾所周知,字典是鍵值對形式的,並且為對應的key指定value。在c#6.0之前,我們有很多不同的方式去建立鍵值對。看一下下面的在c#中c#6.0之前怎麼使用鍵值對字典的。

using

system;

using

system.collections.generic;

namespace

cplusplusnewfeature

, ,,};

foreach (var item in

mydictionary)

console.readline();}}

}

in c#6.0但是在c#6.0中,我們可以邏輯上為索引為1的指定「mukes kumar」的值,其它的以此類推。你可以看看下面的這個例子,將消除你所有的疑慮。

using

system;

using

system.collections.generic;

using

static

system.console;

namespace

cplusplusnewfeature

;

foreach (var item in

mydictionary)

readline();}}

}

之前也看過這方面的文章,沒動手實現過,今天嘗試了下,發現非常的方便。

c 6 0新特性(一)

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

C 6 0 新特性 二

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

C 6 0新加特性

1 自動屬性的增強 1.1 自動屬性初始化 initializers for auto properties c 4.0下的果斷實現不了的。c 6.0中自動屬性的初始化方式 只要接觸過c 的肯定都會喜歡這種方式。真是簡潔方便呀。1.2 唯讀屬性初始化getter only auto properti...