1. 程式人生 > >C# 6.0 新特性

C# 6.0 新特性

Unity設定使用.net 4.6(Unity2018.2.2)

c# 6.0是.net 4.6的一部分,unity預設使用的是.net 3.5,可以在Edit – Project Settings – Player中,將Scripting Runtime Version修改為Experimental (.Net 4.6 Equivalent),然後重啟即可。

 

c# 6.0 新特性

pubic class Test: MonoBehaviour{

     public int testValue => testRandomValue;
     private int testRandomValue;

 
     void Start()
    {
         testRandomValue = Random.Range(1, 10);
        print(testRandomValue+":"+testValue);

        TestList tl = new TestList() ;
        string results = $"name: {tl?.name} height: {tl?.height} status: {tl?.status}";
        print(results);
        TestList t2 = new TestList { name = "B", height = 170, status = 1 };
        string results2 = $"name: {t2?.name} height: {t2?.height} status: {t2?.status}";
        print(results2);
    }

}

public class TestList {

    public string name { get; set; } = "A";
    public float height { get; set; } = 180;
    public int status { get; set; } = 0;

    public string SayHello()
    {
        return "hello";
        
    }
}

 解析:

1.表示式方法體

public int testValue => testRandomValue;

還可以跟方法

private static string SayHello() => "Hello World";

private static string TomSayHello() => $"Tom {SayHello()}";

 

2.自動屬性初始化器

 public string name { get; set; } = "A";

可以不用在建構函式裡初始化

 

3.空操作符 ( ?. )

tl?.name  

當一個物件或者屬性職為空時直接返回null, 就不再繼續執行後面的程式碼

?. 特性不光是可以用於取值,也可以用於方法呼叫,如果物件為空將不進行任何操作,下面的程式碼不會報錯,也不會有任何輸出。

4.字串插值

 string results = $"name: {tl?.name} height: {tl?.height} status: {tl?.status}";

類似string.Format()

字串插值不光是可以插簡單的字串,還可以直接插入程式碼

 string results = $"name:{tl.name} sayhello {tl.SayHello()}"

5.空合併運算子(??)

A??B

當A為null時返回B,A不為null時返回A本身

空合併運算子為右結合運算子,即操作時從右向左進行組合的。如,“A??B??C”的形式按“A??(B??C)”計算

 

 

以上是比較常見的C# 6.0 特性,其他的還有,可以自己去研究一下。