C#中的委托
C#中的授权委托类似C++中的这种独特的表针:对准涵数的表针。根据界定对准涵数的表针,在程序流程中人们就能够灵便的启用好几个涵数,或许,前提条件是这种涵数的回到种类和主要参数目录的数量和种类都同样。根据对准涵数的表针,人们可以将涵数做为另外涵数的主要参数。
最先备考一下下C++中的对准涵数的表针。
1:界定。文件格式给出:
回到种类 (*指针变量名)(主要参数种类目录) 特别注意:主要参数种类目录中只能主要参数种类和数量,沒有形参名。
如:
1 double (*fp)(double, double)
2:函数指针的赋值。
文件格式:指针变量名 = 涵数名
特别注意:涵数名所意味着的涵数,其回到种类和主要参数目录必需和函数指针的界定中的主要参数同样。
倘若有下列的2个涵数:
double multiple(double p1, double p2)
{
return p1 * p2;
}
double divide(double p1, double p2)
{
return p1 / p2;
}
在程序流程中就能够将这2个涵数赋给表针fp而且应用了。
如:
fp = multiply;
fp(1.0, 2.0); //等同调用函数multiply(1.0, 2.0);
fp = divide;
fp(4, 2); //等同调用函数divide(4, 2);
3:运用函数指针将涵数做为另一个涵数的主要参数。
由于对准涵数的表针就是说1个指针变量,全部能够将其做为涵数的主要参数。
如:
void doSomething(double (*fp)(double, double), double p1, double p2)
{
cout << fp(p1, p2) << endl;
}
--------------------------------------------------------------------------------
C#中的授权委托都是这般。
最先要界定授权委托种类的自变量;
随后要对自变量开展赋值;
最终是启用。
1:授权委托种类的界定:应用关键词delegate。
文件格式:delegate 回到种类 授权委托种类名(形参目录)
特别注意:与C++中的函数指针不一样,在界定授权委托种类的形参目录中,除开要得出种类,也有得出形参名。类似在界定涵数原形时,加了个delegate关键词。
如:
1 delegate double MyDelegate(double p1, double p2);
特别注意:此地的MyDelegate并非1个自变量,只是类似类的1个种类,在应用该授权委托时也有界定该种类的自变量。
2:界定授权委托种类的自变量。
文件格式:授权委托种类名 变量名;
3:授权委托自变量的赋值和启用
倘若程序流程中有下列2个涵数:
double Multiply(double p1, double p2)
{
return p1 * p2;
}
double Divide(double p1, double p2)
{
return p1 / p2;
}
有二种方式能够给授权委托自变量赋值
MyDelegate myDelegate; //界定授权委托种类的自变量
myDelegate = new MyDelegate(Multiply); //赋值方式1
Console.WriteLine(myDelegate(2.0, 3.0)); //授权委托自变量的应用
myDelegate = Divide; //赋值方式2
Console.WriteLine(myDelegate(4, 2));
4:将授权委托用以函数参数。和C++的函数指针略有不同。
例:
void Test(MyDelegate myDelegate)
{
myDelegate(3, 4);
}
相关文章
- 3条评论
- 语酌哑萝2022-06-02 06:19:00
- te myDelegate; //界定授权委托种类的自变量 myDelegate = new MyDelegate(Multiply)
- 俗野诤友2022-06-02 00:11:56
- gate double MyDelegate(double p1, double p2);特别注意:此地的MyDelegate并非1个自变量,只是类似类的1个种类,在应用该授权委托时也有界定该种
- 森槿囍神2022-06-02 07:04:12
- ltiply); //赋值方式1 Console.WriteLine(myDelegate(2.0, 3.0)); //授权委托自变量的应用 myDelegate = Divide;