C#之委托(函數參數傳遞)
在學委托這塊兒的時候,函數參數這塊不是很理解,於是針對一個例子做了深入的理解,和大家分享一下。
首先,先說一下我對委托的理解,委托就是一個可以執行多種同類功能的變量,之所以它是執行同類功能的變量,是因為它隻能接受一個函數,而一個函數隻能執行一種類型的功能,它的作用就是提高程序的靈活性,和擴展性,比如說如果我們不用委托,可能一個函數隻能執行加法運算,但是如果用了委托,它可以同時執行加減乘除,也就是說這個程序的功能擴展了,工作的靈活性也提高了。
下麵是一段有關冪和乘法運算同時進行的代碼:
namespace ConsoleApplication16
{//創建委托
delegate double DoubleOp(double x);
class Program
{
static void Main(string[] args)
{
//實例化兩種運算方法
DoubleOp[] operations =
{
new DoubleOp (MathOperations .MultiByTwo ),
new DoubleOp (MathOperations .Square )
};
for (int i=0;i<operations .Length ;i++)
{
Console.WriteLine("Using operations[{0}]", i);
// ProcessAndDisplayNumber這個函數的參數傳遞到此
ProcessAndDisplayNumber(operations[i], 3.0);
Console.WriteLine();
}
}
public static void ProcessAndDisplayNumber(DoubleOp action, double value)
{
double result = action(value);
Console.WriteLine("Value is {0},result of operation is {1}", value, result);
}
}
//兩種運算方式
class MathOperations
{
public static double MultiByTwo(double value)
{
return value * 2;
}
public static double Square(double value)
{
return value * value;
}
}
}
這段代碼運行之後的結果如下:
在敲代碼之前,我把源碼看了一遍,不是很明白,就先敲完了,讓它運行,看到運行結果,感覺代碼明白了,主要就是沒有理清它的邏輯,所以,有時候光想不做是不行的,先做了,也許就明白了。
最後更新:2017-04-03 12:54:50