您的位置:首页 > 编程语言 > C#

C#之委托学习二

2016-05-06 15:35 441 查看
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# 多播委托 delegate