閱讀827 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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

  上一篇:go git 使用初步
  下一篇:go Java加載js