標籤:靜態類 性方面 輸出 length 情況 需要 world hello int
1.自動屬性初始化的改進
聲明屬性時可以直接進行初始化
public int id {get;set;}=10;
自動屬性是省去了get和set內部的過程,而直接用set;get;這樣的語句代替,
把這個過程交給了系統,系統也為這個屬性動態產生一個對應的欄位。
下面代碼是一個自己控制get和set方法的樣本:
private int myVar; public int MyProperty { get { return myVar; } set { myVar = value; } }
這裡最簡單的邏輯。
示範:可以看到對屬性賦的初值是有效,並且正確的輸出了。
2.靜態類的引入
以控制台應用程式為例,以前在控制台輸出內容時寫的代碼是:
Console.WriteLine("hello world");
這裡的Console就是屬於System命名空間下的一個靜態類。
現在可以這樣用,在引入命名空間的地方,把靜態類引入。
using static System.Console;
這裡需要注意的是,使用static的關鍵字,靜態類的類名要求的全名。
在代碼中就能這樣用了:
WriteLine("世界,你好");
省去了靜態類的開頭。個人理解是為了代碼的冗餘。
3.string.Format的改進
這裡直接更改了它的形式,已經不再使用string.Format這種形式了。
為了形成對比,下面是兩個樣本的比較。
原:
string name="喜歡";string t1=string.Format("{0,10}",name);
對{0,10}的理解,0表示匹配第0個參數,10表示向左補全,使字串長度不滿10的時候左以空格補全。如果原字串長度大於10,則這個參數將無效,如果是負數則表示右補全。
如果是{0:yyyy-mm-dd}以冒號隔開的表示以後面的格式顯示資料。
新:
string name="喜歡";string t1=$"{0,10}";
地方直接以"$"代替了string.Format,並且把參數寫在{}大括弧裡,不再需要佔位符。
4.集合初始化器
之前我一直是使用這樣的方式初始化的,
Dictionary<string,int> dic=new Dictionary<string,int>{{"1",1},{"2",2}};
現在可以是:
Dictionary<string,int> dic=new Dictionary<string,int>{["1"]=1,["2"]=2};
個人感覺方便了一點點,在直觀性方面也比較好看。
5.null運算式
之前只知道可空實值型別,像int?這樣的格式,正常情況下,實值型別是不可以為null,只有參考型別才能為null;
string[] test=new string[]{"xihuan","xiaoai"};int? length1=test[0]?.Length;
int? result=test[1]?.Length??
int d= "sfsd"?.Length??5;
??雙問號操作符,左邊為null則取值為右邊,左邊不為null則為取值為左邊。
C#6.0一些特性