C 入門經典 第六章 委託

2021-09-09 01:17:39 字數 1796 閱讀 4593

c#入門經典

第六章 6.6

委託的宣告非常類似於函式,但不帶函式體,且要使用delegate關鍵字。

委託的宣告指定了乙個返回型別和乙個引數列表。

在定義了委託後,就可以宣告該委託型別的變數。

接著把這個變數初始化為與委託有相同返回型別和引數列表的函式引用。

之後,就可以使用委託變數呼叫這個函式,就像該變數是乙個函式一樣。

有了引用函式的變數後,還可以執行不能用其它方式完成的操作。

例如,可以把委託變數作為引數傳遞給乙個函式,這樣,該函式就可以使用委託呼叫引用它的任何函式。

而且在執行之前無需知道呼叫的是那乙個函式。

class

ch06ex05

static

double divide(double m, double

n)

public

static

void

method()

", process(100, 10));//

使用委託變數呼叫這個函式,就像該變數是乙個函式一樣

process = new processdelegate(divide);//

把委託變數初始化為與委託有相同返回型別和引數列表的函式引用。

process(100, 10);//

使用委託變數呼叫這個函式,就像該變數是乙個函式一樣

console.writeline("

divide(100,10)=

", process(100, 10

)); }

}class

program

}

delegate關鍵字指定該定義是用於委託的,而不是用於函式的(該定義所在的位置與函式定義相同)

委託的三種用法

class

test

static

void main(string

args)

;//c# 3.0. a delegate can be initialized with

//a lambda expression. the lambda also takes a string

//as an input parameter (x). the type of x is inferred by the compiler.

testdelegate testdelc = (x) =>;

//invoke the delegates.

testdela("

hello. my name is m and i write lines.");

testdelb(

"that's nothing. i'm anonymous and ");

testdelc(

"i'm a famous author.");

//keep console window open in debug mode.

console.writeline("

press any key to exit.");

console.readkey();

}}/*

output:

hello. my name is m and i write lines.

that's nothing. i'm anonymous and

i'm a famous author.

press any key to exit.

*/

ps:還有一種用法是,直接把方法名賦值給委託,不需要new

mysql第六章 第六章 mysql日誌

第六章 mysql日誌 一 錯誤日誌 錯誤日誌的預設存放路徑是 mysql 存放資料的地方 hostname.err 1.修改錯誤日誌存放路徑 mysqld log error data mysql mysql.log 2.檢視配置命令 show variables like log error 3...

c 第六章 模板

1 函式模板 template t add t a,t b return a b 隱式呼叫 add 5,6 顯示呼叫 add 5,6 模板之間可以構成過載,模板與普通函式之間也可構成過載,呼叫順序如下 跟某一普通的引數完全匹配,呼叫之,跟函式模板的引數可以完全匹配 隱式呼叫 呼叫之,跟函式模按引數不...

C語言 第六章

c語言 第六章 飄過的小牛 部落格頻道 csdn.net 一 變數儲存空間的分類順序 先宣告的變數後分配儲存空間 撤銷的順序與之相反 先建立的後撤銷。這種機制就稱為棧機制,好像往乙個只能允許進出乙個盤子的桶裡放盤子,先放進的後拿出。在c 語言程式中,區域性變數就被分配在棧區,而且是以高階為棧底建立的...