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;
}
}
Operations是一个委托类型(可以把它当做是c++中的函数指针一样的东西)
action是Operations的一个对象,如果把方法赋值给它,那么它就指向了那个方法。
好了现在可以看下面这行代码的意思了:
double result = action(value);
用value作为参数调用action所指向的方法并把返回值赋给result。
多谢 了解
action你当作一个函数就行了,实际是个待类型的函数指针链;可以连action都省略 —— 匿名函数;