介面 委託 事件

2022-02-20 22:41:08 字數 3252 閱讀 9217

介面和抽象類:

為了更好的理解介面,最常見的問題莫過於介面和抽象類的區別。介面和抽象類卻存在實實在在的差異,具體體現在:

1.乙個類可以實現任意多個介面,但是最多只能對乙個抽象類進行子類化;

2.乙個抽象類可以包括非抽象方法,而乙個介面的所有方法在效果上都是抽象的;

3.乙個抽象類可以宣告並使用變數,而乙個介面不能;

4.乙個抽象類中的方法的訪問修飾符可以是:public,internal,protected,protected internal,或者private,而介面中預設情況下都是public,而且在宣告介面成員時,不允許使用訪問修飾符;

5.乙個抽象類可以定義建構函式,而乙個介面不能; 

上述5點區別主要是使用上,之所以將其區分開,是因為其使用場景是不同的 ,即功用性所在,主要可概括為:抽象類用在具有族層關係的繼承關係上;而介面用在具有功能性意義上。

介面中屬性的實現:

通常情況下介面中都是對應方法,然而其確實可以對屬性 進行同樣操作,先看如下**:

using

system;

using

system.collections.generic;

using

system.text;

namespace

//唯讀

string wenben

}public

class

jc : ceshi

}public

string

wenben

set }}

class

program

,wenben:

", jc.da, jc.wenben);

console.readline();}}

}

委託概述:在 c 語言 的多種型別指標中,有一種叫做「函式指標」,即是指函式的入口位址。在 c# 中委託的概念與其相類似。而與c 語言中函式指標不同的是,.net 中的委託是型別安全的。

委託的使用:

同使用乙個類相類似,首先定義要使用的委託,這裡規定了委託所代表的哪種型別的方法; 其次建立該委託的乙個或多個例項。這裡舉一示範**:

namespace

static

void main(string

args)

", showint(1

)); console.readline();}}

}

上例可見一般情況下,委託的應用,即在對應乙個方法使用委託的情況下。

注意:對於式:delegateshowint showint = new delegateshowint(showdata) 可以認為是所有委託都有的「建構函式」形式——其引數是函式引用。

多播委託:

前面例子中是最為簡單、常用的一種形式(乙個委託例項,呼叫乙個方法)。因為我們可以例項化乙個或多個某種委託的例項,另一方面,我們也可以讓乙個委託呼叫多個方法,這裡稱作多播委託。 

通過例項,可見我們對委託物件,實現了多個方法的繫結。

注意:之所以要求多播委託的返回型別為void,是因為如果有返回值,將沒有意義,起到作用的只有最後乙個被呼叫的函式而已!

事件概述:

有了前述對委託的講述,為這裡講解事件做好了鋪墊。事件,其在windows form中得到極大應用,這裡舉一最常見的點選按鈕,觸發事件的例子。 

1

this.button.location = new system.drawing.point(458, 125);2

this.button.name = "button";

3this.button.size = new system.drawing.size(75, 23);4

this.button.tabindex = 2;5

this.button.text = "測算"

;6this.button.usevisualstylebackcolor = true;7

this.button.click += new system.eventhandler(this.button_click);

這是windows form中加入的乙個button按鈕,在第7行,對物件button的事件click賦予了委託,該委託指定了形式:

private

void button_click(object

sender, eventargs e)

對應型別的引數含有object和eventargs,並且返回為void形式。這樣事件就與委託相聯絡上。

綜上可見:

1.委託,作為一種特殊的型別,雷同於定義乙個類(實際上,後台即是將其作為類處理) ;

2.事件,規範了其型別(委託型別);

綜上之,之所以介面不能包含委託,而介面為什麼可以包含事件呢?

因為委託是一種與類同等地位的特殊型別(類的例項是儲存資料的託管記憶體空間,而委託則只有方法位址而已),故介面不能包含委託;事件從地位上不與類、介面同一層次,事件的獨特機制使得事件可以是乙個介面的標準組成部分,只要繼承的類包含乙個public事件成員。

自定義事件:

從上例,可以看到自定義事件的從定義、賦值、使用等個部分的方法,也可以加深對事件的了解。

c 委託事件

1,什麼是委託 委託是什麼?從生活理解就像是你是乙個c 程式設計師,你對c 並不了解,當需要進行c 分析的時候你委託給你的一位懂c 的同事幫你來完成 在c 中,委託的作用是這樣描述的 委託就像乙個函式的指標,在程式執行時可以使用它們來呼叫不同的函式。簡單點說,委託能夠引用函式,通過傳遞位址的機制完成...

初識委託 事件

這個是我剛入行第乙個感興趣的知識點,翻了翻不知道什麼時候記的筆記,覺得有必要把自己學的知識在梳理一遍,有一些點比當時更清晰 在這裡,先將一位大牛的部落格貼出來,有興趣的可以去看看,很詳細的介紹了委託與事件,讀了幾遍受益匪淺 c 中的委託和事件 c 中的委託和事件 續 本文例項是在vs2013下實現的...

C 委託事件

一 委託 委託類似於函式指標,但函式指標只能引用靜態方法,而委託既能引用靜態方法,也能引用例項方法。委託使用分三步 1 委託宣告。2 委託例項化。3 委託呼叫。例程一 程式 using system namespace 委託 private int add int num1,int num2 例中,...