C#之委託(函數參數傳遞)【轉】

原文:http://blog.csdn.net/wangdan199112/article/details/18796527函數

 

在學委託這塊兒的時候,函數參數這塊不是很理解,因而針對一個例子作了深刻的理解,和你們分享一下。spa

        首先,先說一下我對委託的理解,委託就是一個能夠執行多種同類功能的變量,之因此它是執行同類功能的變量,是由於它只能接受一個函數,而一個函數只能執行一種類型的功能,它的做用就是提升程序的靈活性,和擴展性,好比說若是咱們不用委託,可能一個函數只能執行加法運算,可是若是用了委託,它能夠同時執行加減乘除,也就是說這個程序的功能擴展了,工做的靈活性也提升了。.net

下面是一段有關冪和乘法運算同時進行的代碼:code

[csharp]  view plain  copy
 
 在CODE上查看代碼片派生到個人代碼片
  1. <span style="font-size:18px;">  namespace ConsoleApplication16  
  2.     {//建立委託  
  3.         delegate  double DoubleOp(double x);  
  4.       
  5.         class Program  
  6.         {  
  7.             static void Main(string[] args)  
  8.             {  
  9.               //實例化兩種運算方法  
  10.                 DoubleOp[] operations =  
  11.                 {  
  12.                     new DoubleOp (MathOperations .MultiByTwo ),  
  13.                     new DoubleOp (MathOperations .Square )  
  14.                 };  
  15.                 for (int i=0;i<operations .Length ;i++)  
  16.                 {  
  17.                     Console.WriteLine("Using operations[{0}]", i);  
  18.                     // ProcessAndDisplayNumber這個函數的參數傳遞到此  
  19.                     ProcessAndDisplayNumber(operations[i], 3.0);  
  20.                     Console.WriteLine();  
  21.                 }  
  22.             }  
  23.             public static void ProcessAndDisplayNumber(DoubleOp action, double value)  
  24.             {  
  25.                 double result = action(value);  
  26.                 Console.WriteLine("Value is {0},result of operation is {1}", value, result);  
  27.             }  
  28.         }  
  29.        //兩種運算方式  
  30.         class MathOperations  
  31.         {  
  32.             public static double MultiByTwo(double value)  
  33.             {  
  34.                 return value * 2;  
  35.             }  
  36.             public static double Square(double value)  
  37.             {  
  38.                 return value * value;  
  39.             }  
  40.         }  
  41.     }  
  42. </span>  

             這段代碼運行以後的結果以下:blog

 

             

             在敲代碼以前,我把源碼看了一遍,不是很明白,就先敲完了,讓它運行,看到運行結果,感受代碼明白了,主要就是沒有理清它的邏輯,因此,有時候光想不作是不行的,先作了,也許就明白了。ip

相關文章
相關標籤/搜索