[读书笔记]多播委托

  委托也可以包含多个方法,这种委托称为多播委托。如果调用多播委托,就可以按顺序连续调用多个方法。为此,委托的签名就必须返回void.否则,就只能得到委托调用的最后一个方法的结果。

/*

 * Created by SharpDevelop.

 * User: Herbert

 * Date: 2010-3-20

 * Time: 23:11

 * 

 * To change this template use Tools | Options | Coding | Edit Standard Headers.

 */

using System;



namespace MulticastDelegate

{

	delegate void DoubleOp(double value);

	

	class MathOperations

	{

		public static void MultiplyByTwo(double value)

		{

			double result = value*2;

			Console.WriteLine("Multiply by 2: {0} gives {1}", value, result);

		}

		

		public static void Square(double value)

		{

			double result = value*value;

			Console.WriteLine("Squaring: {0} gives {1}", value, result);

		}

	}

	

	class Program

	{

		public static void Main(string[] args)

		{		

			DoubleOp operations = MathOperations.MultiplyByTwo;

			

			operations += MathOperations.Square;

			

			ProcessAndDisplayNmber(operations, 2.0);

			ProcessAndDisplayNmber(operations, 7.94);

			ProcessAndDisplayNmber(operations, 1.414);			

			

			Console.Write("Press any key to continue . . . ");

			Console.ReadKey(true);

		}

		

		static void ProcessAndDisplayNmber(DoubleOp action, double valueToProcess)

		{

			Console.WriteLine();

			Console.WriteLine("ProcessAndDisplayNumber called with value = {0}", valueToProcess);

			action(valueToProcess);

		}

	}

}

 

下面的code

DoubleOp operations = MathOperations.MultiplyByTwo;

			

operations += MathOperations.Square;



 

等价于:

DoubleOp operation1 = MathOperations.MultipleByTow;

DoubleOp operation2 = MathOperation.Square;

DoubleOp operations = operation1 + operation2;

 

 

 

你可能感兴趣的:(读书笔记)