using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DelegateDemo1
{
class Program
{
/// <summary>
/// 定义一个返回string,没有参数的委托 delegate:委托关键字
/// </summary>
/// <returns></returns>
delegate string GetAString();
/// <summary>
/// 定义一个没有返回值,带一个int类型参数的委托
/// </summary>
/// <param name="x"></param>
delegate void IntMethodInvokder(int x);
/// <summary>
/// 定义一个返回double,带2个参数的委托 定义委托:等同于定义一个新类
/// </summary>
/// <param name="first"></param>
/// <param name="second"></param>
/// <returns></returns>
delegate double TwoLongOp(long first, long second);
delegate double DoubleOp(double x);
static void ProcessAndDisplayNumber(Action<double> action, double value)
{
action(value);
}
static void Main(string[] args)
{
//测试多播委托
Action<double> operations = MathOperations.MultiplyByTwo;
operations += MathOperations.Squre;
//会执行委托的所有方法 MathOperations.MultiplyByTwo、MathOperations.Squre都会被执行 执行的方式是按照顺序执行的
ProcessAndDisplayNumber(operations, 3);
ProcessAndDisplayNumber(operations, 4);
Console.ReadKey();
}
}
class MathOperations
{
public static void MultiplyByTwo(double value)
{
Console.WriteLine("MultiplyByTwo: " + value * 2);
}
public static void Squre(double value)
{
Console.WriteLine("Squre: " + value * value);
}
}
}
C#之委托学习二
最新推荐文章于 2025-01-19 11:58:32 发布