接近年底了,基本上沒什麼活了,就學點新東西,就想著了解下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當我們使用using引用了system.console這個類。那麼我們就可以訪問這個類的所有屬性和方法。下面看乙個在c# 6.0之前和之後我們是如何做的例子:static system.console;
before c# 6.0
using在c# 6.0之前,如果我們要使用wrilteline()方法,我們使用console.writeline()。如果沒有引用console這個類,我們是無法訪問這個方法的。system;
namespace
cplusplusnewfeature}}
c# 6.0中
usingc# 6.0在使用這個類的時候並不需要每次都引用這個類。我們只需要在using中宣告這個類,那麼我們就可以訪問到它。system;
using
static
system.console;
using
static
cplusplusnewfeature.myclass;
namespace
cplusplusnewfeature
}static
class
myclass}}
當然,我們也可以引用其他的類並訪問它的成員。
在上面的例子中,我們使用了myclass類的hello()方法。
static在這裡我們使用using引入了命名空間了,如下所示:class
myclass
}
using我們使用屬性訪問內部成員。屬性有setter和getter方法。在c# 6.0之前,我們並不能直接為屬性賦值。如果真要這麼做,我們只能通過屬性對應的字段來初始化。但是c# 6.0提供更靈活的方式。static cplusplusnewfeature.myclass;
通過c# 6.0我們可以在定義屬性的時候直接為它賦值。
before c# 6.0
之前我們通過建構函式初始化屬性。看下面的例子,在這裡我們建立了多個屬性,並在建構函式中為他們賦值。
usingc# 6.0中但是在c#6.0中非常方便,我們不必擔心怎麼、在哪兒初始化屬性值。你可以直接在屬性後面通過=asign指定屬性的值。這種方式不會引發異常並且可以正常執行。在下面的例子中,我們可以看到emplyeeid,firstname,lastname初始化。system;
using
static
system.console;
namespace
cplusplusnewfeature
}public
class
employee
public
string firstname
public
string lastname
public
string fullname
public
employee()
", firstname, lastname);}}
}
usingc#6.0提供了一種新的初始化集合的方式。你可以建立想字典,hashtable一樣的集合。眾所周知,字典是鍵值對形式的,並且為對應的key指定value。在c#6.0之前,我們有很多不同的方式去建立鍵值對。看一下下面的在c#中c#6.0之前怎麼使用鍵值對字典的。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); } }}}
usingin c#6.0但是在c#6.0中,我們可以邏輯上為索引為1的指定「mukes kumar」的值,其它的以此類推。你可以看看下面的這個例子,將消除你所有的疑慮。system;
using
system.collections.generic;
namespace
cplusplusnewfeature
, ,,};
foreach (var item in
mydictionary)
console.readline();}}
}
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...