首页 新闻 会员 周边 捐助

委托知识点的疑虑double result = action(value);这都那代码什么意思啊

0
[已解决问题] 解决于 2016-12-29 10:52

delegate double Operations(double x);

class Program
{
static void Main()
{
Operations[] operations =
{
MathOperations.MultiplyByTwo,
MathOperations.Square
};

for (int i = 0; i < operations.Length; i++)
{
Console.WriteLine("Using operations[{0}]:", i);
DisplayNumber(operations[i], 2.0);
DisplayNumber(operations[i], 7.94);
Console.ReadLine();
}
}

static void DisplayNumber(Operations action, double value)
{
double result = action(value);
Console.WriteLine(
"Input Value is {0}, result of operation is {1}", value, result);
}
}

struct MathOperations
{
public static double MultiplyByTwo(double value)
{
return value * 2;
}

public static double Square(double value)
{
return value * value;
}
}

C#
糯米好吃的主页 糯米好吃 | 初学一级 | 园豆:64
提问于:2016-12-28 17:50
< >
分享
最佳答案
0

Operations是一个委托类型(可以把它当做是c++中的函数指针一样的东西)

action是Operations的一个对象,如果把方法赋值给它,那么它就指向了那个方法。

 

好了现在可以看下面这行代码的意思了:

double result = action(value);

用value作为参数调用action所指向的方法并把返回值赋给result。

奖励园豆:5
keitsi | 菜鸟二级 |园豆:246 | 2016-12-28 22:33

多谢  了解

糯米好吃 | 园豆:64 (初学一级) | 2016-12-29 10:52
其他回答(1)
0

action你当作一个函数就行了,实际是个待类型的函数指针链;可以连action都省略 —— 匿名函数;

花飘水流兮 | 园豆:13615 (专家六级) | 2016-12-28 21:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册