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

C#中的委托

2016-08-17 15:42 183 查看
1.学习委托一篇好的学习博客:http://www.tracefact.net/csharp-programming/delegates-and-events-in-csharp.aspx

2.委托实例讲解:初级篇

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Test
{

//1.正常情况下是会把问候的代码封装成类的,所以就会出现如下封装
class GreetDelegateMgr
{
public delegate void GreetDelegate(string name);
public GreetDelegate delegateTest;

public event GreetDelegate eventTest;

public void MakeGreet(string name)
{
if (delegateTest != null)
delegateTest(name);
}

public void MakeGreetEvent(string name)
{
if (eventTest != null)
{
eventTest(name);
}
}
}

class Program
{
static void Main(string[] args)
{
//1.这样子虽然也能达到目的,但是违背了封装性,对GreetDelegateMgr的delegateTest成员进行更改
GreetDelegateMgr greetMgr = new GreetDelegateMgr();
//greetMgr.delegateTest = EnglishGreet;
//greetMgr.delegateTest += ChineseGreet;
//greetMgr.MakeGreet("jiangjing");

//2.引入事件,事件这里只能进行+=操作如果使用=会编译错误,因为eventTest封装了私有的委托,不能对其进行赋值
greetMgr.eventTest += EnglishGreet;
greetMgr.eventTest += ChineseGreet;
greetMgr.MakeGreetEvent("jiangjing");

Console.ReadKey();
}

public static void EnglishGreet(string name)
{
Console.WriteLine("Hello:{0}", name);
}

public static void ChineseGreet(string name)
{
Console.WriteLine("你好:{0}", name);
}
}
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: