C 3 0的一些新特性

2021-09-08 23:31:34 字數 1514 閱讀 1471

1.隱含型別區域性變數

vari = 5;

var 

h=23.56;

vars = 「c sharp";

varintarr = new  ;

vara = new ;// int

•var

為關鍵字,可以根據後面的初始化語句自動推斷型別。

•初始化語句

必須為表示式

,且編譯時可以推斷型別。

•var

宣告的僅限於區域性變數

,亦可以用於

foreach, using

等語句中。

•陣列也可以作為隱含型別。

2.擴充套件方法

using 

system;

public 

static

class 

test

public 

static 

void 

foo(

this

string s) 

//擴充套件方法;靜態類中只能有靜態方法;

} 擴充套件方

法允許我們在不改變源**的情況下擴充套件(即新增)現有型別中的例項方法。

擴充套件方法要點

•擴充套件方法的本質

為將例項方法呼叫在編譯期改變為靜態類中的靜態方法呼叫。•

注意擴充套件方法的優先順序:現有例項方法優先順序最高,其次為最近的

namespace

下的靜態類的靜態方法,最後為較遠的

namespace

下的靜態類的靜態方法。

•擴充套件方法是一種編譯時技術,注意與反射等執行時技術進行區別,並慎重使用。

3.物件與集合初始化器

public class point

set  }

public int y  set  }

}var a = new point ;

相當於:

var a = new point(); 

a.x = 0; a.y = 1;

集合初始化器:

list num= new list ;

物件與集合初始化器要點

•物件初始化器實際上利用了編譯器對物件中對外可見的字段和屬性進行按序賦值。

•集合初始化器會對初始化器中的元素進行按序呼叫

icollection.add(t)。•

注意物件初始化器和集合初始化器中成員的可見性和呼叫順序。

•物件與集合初始化器同樣是一種編譯時技術。

4.匿名型別

using system;

public class test

;var p2 = new ;

console.writeline(

p2.name

); }}

•可以使用

new關鍵字

呼叫匿名初始化器建立乙個匿名型別的物件。

•匿名型別直接繼承自

system.object。•

匿名型別的成員是編譯器根據初始化器推斷而來的一些讀寫屬性。

C 3 0的一些新特性

1 隱含型別區域性變數 var age 26 var username zhuye var userlist new foreach var user in userlist console.writeline user 純粹給懶人用的var關鍵字,告訴編譯器 對於clr來說,它是不會知道你是否使用...

C 3 0的一些新特性

1.隱含型別區域性變數 vari 5 varh 23.56 vars csharp varintarr new vara new int var 為關鍵字,可以根據後面的初始化語句自動推斷型別。初始化語句 必須為表示式 且編譯時可以推斷型別。var 宣告的僅限於區域性變數 亦可以用於 foreach...

C 3 0 新特性概覽

自從看了scottgu的幾篇文章後就有想讓c 3.0的一些新特性在我的部落格上也留下歷史地一頁。但是由於環境不允許好久都沒有用上.net 3.0,今天終於忍不住地要動一動鍵盤滿足一下自己的慾望,因為我自己的電腦上安裝了.net 3.0 framework sdk。在這裡我總結一下前輩們的研究成果,也...