c 2 0的新功能 三 分部類 匿名方法等

2021-06-15 21:03:18 字數 2500 閱讀 6001

一、分部類

1、定義

partial class a

string aa;

partial class a

void dotest()

其實就是

class a

string aa;

void dotest()

2、好處

(1). 可以把乙個類的定義分部到多個檔案中,所以可以讓多個人同時操作乙個類

(2). 把系統生成的**和使用者**分開

3、注意點

(1). 只能定義類、結構和介面

(2). 所有的部分都必須加partial

(3). 每個部分中的類都必須有相同的訪問符

(4). 如果乙個為abstract或sealed,則所有的都是abstract或sealed

(5). 任何乙個繼承某個類,所有的都從該類繼承。

(6). 各個部分可以實現不同介面,會實現所有定義的介面。

(7). 任何部分中定義的方法和字段可以被其他的部分中使用。

(8). 巢狀型別可以是分部的,它外面的型別是不是分部的是無所謂的。

(9). 最後屬性會進行合併

(10). 只能放在class關鍵字前面

(11). 必須在同乙個程式集中。

(12). 泛型的引數說明必須加到所有的後面,泛型引數必須一致。

二、迭代器

1、定義

可以用foreach方法,在2.0中不需要去實現ienumerable 和 ienumerator介面,只需要寫方法返回ienumerable介面。用yield return 某個值就可以了。

具體如下

public static ienumerable power(int number , int exponent )

}這樣就可以了。

2、注意點

(1). 必須返回相同型別

(2). 可用作方法、運算子和get訪問器

(3). yield break終止迭代

(4). 可以用多個迭代器

(5). 返回值必須是ienumerable、ienumerator、ienumerable、ienumerator介面。

三、可空型別

1、定義

其實是system.nullable的例項,可以設定空值。

如nullable:可以賦任何正確的型別和null

定義時可以用:nullablenum = null或者int? num=null

可以把日期設定為null

2、注意點

(1). 用??來取到預設值int? x = null;int y = x??-1;

(2). 不允許使用巢狀的可空型別。nullable>

(3). 取到值用value,或者用getvalueordefault();

四、匿名方法

1、定義

命名方法

//public delegate void system.eventhandle(object sender , eventargs e);

this.load += new system.eventhandle(this.form1_load);

public void form1_load(object sender , eventargs e)

//匿名方法

this.load += delegate(object sender , eventargs e)

;//分號不能少

2、注意點

(1). 不能使用out和ref的引數

(2). 不能用不安全**

五、屬性訪問器可訪問性

1、public string something

set}

2、現在可以限制其中乙個的可訪問性

public string something

protected set

}3、介面中的不能增加屬性可訪問性,所以可以在實現介面中的類進行新增。

4、當屬性有兩個訪問器的的時候,可以限制其中乙個。

5、屬性訪問器的可訪問性必須比屬性可訪問性更嚴格

6、override必須與被重寫的那個屬性相同。

六、委託中的協變與逆變

1、協變,委託方法返回型別可以更具體

public delegate 父類 somefucntion();

public 子類 otherfunction()

2、逆變

public delegate void somefucntion(子類);

public void otherfunction(父類)

七、命名空間別名限定符

1、class system{}

global::system.console.writeline("hello world!");//global 表示全域性的

2、using colalias = system.collections;//別名

colalias::hashtable test = new colalias::hashtable();

c 2 0的新功能 一 泛型類

一 定義 public class stack t m items public void push t item public t pop public stack 二 使用 stactstack new stack stack.push 1 stack.push 2 stack.pust sss...

C 2 0 新增功能

泛型 該語言中新增了一些泛型型別,使得程式設計師能夠實現程度很高的 重用,獲得更高的集合類效能。泛型型別只存在 arity 上的不同。也可以將引數強制為特定的型別。有關更多資訊,請參見泛型型別引數。迭代器 迭代器使得規定 foreach 迴圈將如何迴圈訪問集合的內容變得更加容易。分部類 分部型別定義...

c 2 0的新功能 二 泛型的其他的一些資訊

一 泛型的轉換 1 可以隱式轉換到object以及派生約束指定的類。class myclasswhere t baseclass isomeinte ce t可以轉換到object baseclass isomeinte ce。2 顯式轉換,可以轉換到介面,不能顯示轉換到類,是型別不安全的。3 解決...