C 委託零基礎理解

2022-02-17 07:36:48 字數 2306 閱讀 2933

說來慚愧,在大學的課程中,竟然沒有聽說過委託這個名稱。那麼今天我就帶著大家一起**下委託和事件。

咱們先來看下委託

我主要從以下幾個方面講解

1,  為什麼使用委託  2.什麼是委託  3.委託如何使用

為什麼使用委託?

委託是c#中非常重要的乙個概念,使用委託使程式設計師可以將方法引用封裝在委託物件內。然後可以將該委託物件傳遞給可呼叫所引用方法的**,而不必在編譯時知道將呼叫哪個方法。與c或c++中的函式指標不同,委託是物件導向,而且是型別安全的。

什麼是委託?

委託是一種引用方法的型別,一旦為委託分配了方法,委託將與該方法具有相同的行為,委託方法的使用和其他方法一樣,具有引數和返回值。

如何使用委託

下面咱們就拋開枯燥的概念,來看幾個活生生的例子是怎麼使用委託的吧!

案例1:中國人和英國人問好

分析:1.首先我們需要編寫乙個中國人問好的方法和乙個英國人問好的方法。

2.編寫乙個greet方法,將問好方法作為乙個引數,實現各個國家人的問好方法。

3.使用委託實現各個國家人的問好功能

使用委託分為三個步驟:1,定義委託  2.宣告委託變數  3.使用委託

// 1.定義委託

public delegate void greetdelegate(string name);

class program

//中國人問好方法

public static void chinesegreeting(string name)

//英國人問好方法

public static void englishgreeting(string name)

public static void greet(string name, greetdelegate makegreet)

}為了加深大家對委託的理解,我們再來寫乙個相似的例子。

案例2:翻譯案例:通過委託將英文翻譯為中文和韓文

//01.宣告乙個委託類

public delegate void mytransdelegate(string words);

class program

static  void translate(string str,mytransdelegate del)

static void transtocn(string str)

static void transtokorean(string str)

通過這個案例,我們可以看出使用委託的方法不止一種,無論使用哪種方式,最終都和方式一一樣。通過反編譯我們可以證明:

如下圖示我通過反編譯看到方法二的**:

如下是反編譯後方法三的**

有了上述知識儲存,我們再來看乙個案例:

案例3:通過委託將子窗體中的值傳遞到父窗體中

如圖有父窗體和子窗體兩個窗體,現在我想實現當點選父窗體中按鈕時彈出子窗體(當然這個超級簡單),在彈出子窗體後,在子窗體的文字框中輸入內容,點選關閉按鈕後子窗體關閉,並且將子窗體中輸入的內容在父窗體的文字框中顯示。

子窗體中**如下:

//定義委託

public delegate void words(string words);

//宣告委託變數

public words words;

private void button1_click(object sender, eventargs e)

父窗體中的**:

private void btnopen_click(object sender, eventargs e)

public void getwords(string str)

我們來分析下上述兩斷**:

首先,我們想在子窗體關閉時,更新父窗體文字框中的資料。但是我們非常清楚的知道,窗體之間的空間是不能直接相互訪問的,這時我們就要找乙個中介幫我們實現父窗體資料的更新功能。於是我們定義了帶乙個引數沒有返回值的委託words,並且在父窗體中定義了乙個方法getwords符合委託的條件。於此同時,在子窗體中宣告了乙個委託變數words,並且在關閉按鈕中,呼叫了委託變數。

但在子窗體中我們沒有對子窗體委託變數賦值,真正的賦值放到了主窗體中。這樣通過委託就實現了在子窗體中呼叫父窗體的方法,進而實現了父窗體文字框內容的更新。

C 零基礎到入門

1 c語言概述 2 編寫 執行乙個簡單的c語言程式 3 資料型別 4 運算子和表示式 如果你對c語言一竅不通,那你就好好看這篇文章,我會力爭讓你真正的做到從零基礎到入門,同時這篇文章會讓你基本認識什麼是c語言 當然你要是有基礎那就不用看這篇文章,include void main char u pr...

零基礎mysql專案例項 MySQL 零基礎開發

1.終端下連線mysql服務 mysql uroot p回車後輸入設定的密碼即可。進去後每條命令結尾要帶分號 退出命令exit 單行注釋有兩種 或 空格。多行注釋 2.基本命令集合 針對資料庫 use sys show databases 檢視當前操作的資料庫 select databse 針對表 ...

mysql零基礎操作 mysql 零基礎 開始過程

2016 11 07 算是差不多是兩個月的學習,我也馬上要結課了.今天才勉強把mysql裝上,之前還有因為使用者許可權的問題,以及使用者為建立的問題.應該早點就把該準備的開發平台準備好,而不是在最後快考試了來做這件事情,絆倒在細枝末節的東西上.安裝不成功,當時我按照教程,教程上邊說可以跳過管理員的創...