C#6新特性

3511 ワード

1.自動属性強化
public bool ITuest { get; set; } = true;
 public string FirstName { get; } = "aehyok";
2.ラム式を関数体とする
 public int Move(int x, int y) => x + y;
3.静的クラスusing staticを参照
 public double ReturnNum() =>  Acos(3);
4.Null値判定null
int? length = customers?.Count;  int first = (int)customers?[0];
5.文字列埋め込み値
  public string MakeStr()         {             string firstName = "ligen";             string lastName = "wanli";             return string.Format("one is/{firstName},two is/{lastName}");         }
6.nameof式nameof expressionspublic static void AddCustomer(Customer customer) {      if (customer == null )      {          throw new ArgumentNullException( nameof(customer) );      } }
7. Index initializers
var numer = new Dictionary {[4] = "s33" }; 8 try {      res = await Resource.OpenAsync(…); // You could do this. … } catch (ResourceException e) {      await Resource.LogAsync(res, e); // Now you can do this … } finally {      if (res != null )          await res.CloseAsync(); // … and this. }
9、catchとfinallyのawait——Await in catch and finally blocks
C#5.0ではawaitキーワードはcatchおよびfinnalyブロックには されません.6.0では
            try
            {
                res = await Resource.OpenAsync(…); // You could do this. … 
            }
            catch (ResourceException e)
            {
                await Resource.LogAsync(res, e); // Now you can do this … 
            } finally
            {
                if (res != null)
                    await res.CloseAsync(); // … and this. 
            } 

10 Parameterless struct ctorsパラメータなし
public FractionStruct( int a, int b) { A = a; B = b; }
public FractionStruct() : this(0, 1) { }
は、カスタムのパラメータなしコンストラクション を します.
new FractionStruct()
default(FractionStruct)
newはパラメータなしコンストラクション を び す.
defaultは、パラメータなしコンストラクション を び さない.11.Null propagation
v?.A
v?["B"]
v?.ToString()オブジェクトがnullの はプロパティ、インデックス、メソッドなどを び さず、 はnullを します.Swiftの い と ています.