C中通過委託來呼叫物件方法的基本過程

時間 2022-09-20 04:20:57

1樓:

第一步:定義委託並定義該委託物件

public delegate void doubleclickeventhandler(object sender, 這裡可以用自定義的類物件,也就是你需要傳值的物件或者方法 e);

//雙擊listview事件委託

public event doubleclickeventhandler ondoubleclick;

第二步:呼叫

ondoubleclick(this, new 你剛定義的類物件);

2樓:正牌小卡

先定義委託型別a,然後實力化這個委託型別的物件b,然後用b繫結乙個方法,當然實力化時也可以直接寫上這個方法,然後這個方法內就可以寫你要寫的東西了,他就是事件,另外你還要寫乙個自定義的事件引數類用來傳值

3樓:匿名使用者

1)定義委託型別,和事件

public delegate void statuschangeddelegate();

public event statuschangeddelegate statuschanged;

2) 類內部觸發該事件,

public void do()

}3)類的使用者註冊該事件

foo foo = new foo();

foo.statuschanged += new foo.statuschangeddelegate(foo_statuschanged);

下面是個簡單的例子,能幫到你最好了。

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace csharptest

static void foo_statuschanged()}class foo}}}

c#利用委託呼叫類中的非靜態方法怎樣才能讓方法中的內容輸出

4樓:匿名使用者

在c#中,委託是一種型別,屬於引用型別,委託的關鍵字是delegate,委託的定義和類的定義一樣,所以凡是能定義類的地方也是可以定義委託的,public delegate void mydelegate();這個定義了乙個無返回值,無參的委託型別,那麼下面來通過委託編寫一段**:

例項 1 : 委託的基本組成

class program

public static void mymethod()

}上述的**是可以直接進行執行的,在上述**中,首先宣告了乙個委託 mydelegate, 它是無返回值,無引數的 ,同時還建立了乙個方法mymethod(), 這個方法也是 無返回值,無引數的。

靜態方法和例項方法的區別 「靜態方法都是通過關鍵字static來定義的,靜態方法不需要例項這個物件就可以通過類名來訪問這個物件。在靜態方法中不能直接訪問類中的非靜態成員。而用例項方法則需要通過具體的例項物件來呼叫,並且可以訪問例項物件中的任何成員」, 來通過乙個例項來了解

public delegate void mypersondelegate(string name);

static void main(string args)

class person

}class personintance

}在上述**中,首先定義了乙個委託mypersondelegate,它是無返回值,並且需要乙個string型別的引數型別(在這裡說一點,委託是可以進行協變和逆變的,具體請參考.net可變性解析(協變和逆變)),然後分別定義了兩個類person和personinstance 其中person中宣告了乙個getpersonnam的靜態方法,personintance類中宣告了乙個getpersonname的例項方法,在主函式main中,分別進行呼叫.在執行的時候,會發現委託的例項後跟乙個引數,這個引數其實就是方法的引數,因為所定義的委託要求的是乙個執行乙個無返回值,有乙個string型別的引數的方法

5樓:陽光的雷咩咩

你把委託、普通類、事件混淆了,普通委託一般不用+=形式的,還有你的各種名稱可以改進下,一看都是max,仔細看才知道有大小寫等等區別。

6樓:匿名使用者

簡單來說你只是宣告了委託並搭載了幾個方法,根本就沒有執行,所以當然不會有結果,簡單的呼叫比如

max = new max(md.max);//為啥不顯示輸出結果呢?

max += new max(md.min);//為啥不顯示輸出結果呢?

max.invoke();//執行所有搭載方法

當然也可以更簡單比如

max = new max(md.max);//為啥不顯示輸出結果呢?

max();

7樓:放星星的

倒數第三行加上max();

多播委託 這個委託指向了兩個函式,執行委託直接去全執行了,你沒執行他們為什麼輸出??

8樓:匿名使用者

不執行怎麼輸出啊,笨

c#委託怎麼呼叫其它類裡面的方法?

9樓:匿名使用者

testdelegate testdelegate;

testdelegate+= new testdelegate (playwords1);//playwords1要靜態的

testdelegate("");

10樓:匿名使用者

例項化類物件不就可以了麼

c#中的委託,直接呼叫方法與用invoke()呼叫是一樣嗎

11樓:

你這樣是用是完全一樣的

還有另外一種不同的使用方法,有些時候你的方法d不是由自己繫結,而是交由呼叫端繫結,在這種情況下,萬一呼叫端沒有給d繫結具體方法就直接呼叫,你上面的兩種寫法都會報錯

嘗試使用d?.invoke(100);可以避免這種情況下出錯

12樓:

完全一樣的,只是寫法不同。

c#委託事件和一般例項化呼叫方法的區別?請看下面的例子,請說明原因。 20

13樓:匿名使用者

委託什麼意思呢 就是相當於 提前註冊乙個事件 我發生的同時 廣播給相應註冊這個事件方法

asp.net webfrom winfrom 都是基於 委託事件 的 事件驅動模式的

14樓:小豬愛上羊

第乙個,在form2中你form1 f1=new form1()後,f1是乙個新的form1物件,和原本的form1沒關係了,自然不會改變它的任何東西。

剩下的說不準確,樓下繼續。

15樓:仉珂展雁卉

事件就是用委託實現的,當然能讓委託替代乙個事件。事件比委託多了兩個私有方法-add和remove.你可以自己寫個事件,然後用反編譯工具看一下就知道怎麼回事了。

c#中委託如何使用?

16樓:

其實你雙擊產生的**就是和委託來繫結帶一起的啊

C中委託的用途,為什麼需要委託,C 中的委託是什麼意思?

類似於c 中的函式指標,還是特別有用的。目前我主要用在兩個方面,一是實現函式指標功能,二是實現窗體間訊息捕獲。如果你要訪問某一事物而不能夠直接去訪問這是就需要用委託去代替你訪問 委託就是乙個中間傳遞的作用 就是函式指標。可以用於使用者自定義事件。cs中常用於窗體間訊息捕獲。委託的用法很多 一般是用於...

孫權勸學中怎麼通過對話來表現人物的

本文注重以對話表現人物。對話言簡意豐,生動傳神,富於人情味。僅寥寥數語,就使人感受到三位人物各自說話時的口吻 神態和心理。孫權勸學,先一語破的,向呂蒙指出 學 的必要性,即因其 當塗掌事 的重要身份而 不可不學 繼而現身說法,指出 學 的可能性,使呂蒙無可推辭,乃始就學 從孫權的話中,既可以看出他的...

如何通過實力 性格等方面來解析《聖鬥士星矢》中卡妙的角色塑造

他是真的酷,不去解釋一切,在戰鬥中始終保持著最冷靜的狀態。這與許多 聖鬥士開始小瞧 青銅五小強 又被打傷後有的氣憤甚至有的害怕各種表現不同,他始終是乙個冷靜的人,哪怕是在冥王篇為了信仰甘當臥底,身上揹負全體聖鬥士的鄙視和仇恨的時候,他也沒有解釋任何一句話。水瓶座的卡妙我認為在實力方面應該屬於中等偏上...

oracle中如何通過身份證號碼來set性別為男或者女

update table set 性別 decode mode to number substr 身份證,decode length 身份證 15,15,18,17 1 2 1,男 0,女 能看懂嗎 如何根據身份證號碼辨別性別呢 可以根據身份證號碼的第十七位判斷性別,如果為奇數則為男性,偶數則為女性...

c 類中私有成員只能通過類設定的介面函式訪問。舉個例子

class person 在這段 中如果要獲取person類的name值,必須要呼叫getname函式,假如有乙個person型別的變數p,則如果要獲取p的name需要進行如下的操作 p.getname 而不能直接用p.name獲取 class gun gun fire else return 0 ...