C#事件和委托的基础知识模型
2010-07-29 10:34
931 查看
这里设计了一个较为完整且简单的事件模型,帮助初学者了解c#的事件基本概念和逻辑。
view plaincopy to clipboardprint?
using System;
namespace ConsoleApplication3
{
class Program
{
//一个较为完整的委托-事件 模型应用
//by jinjazz
//http://blog.csdn.net/jinjazz
//模型表达
//Test对象执行DoTest方法,回调onTest事件,通过参数控制输出
static void Main(string[] args)
{
Test t1 = new Test();
t1.Name = "t1";
t1.onTest += new Test.dTest(t_onTest);
Test t2 = new Test();
t2.Name = "t2";
t2.onTest += new Test.dTest(t_onTest);
t1.DoTest("aaaa");
t2.DoTest("bbbb");
Console.Read();
}
static void t_onTest(object sender, Test.testEventArgs args)
{
Test t = sender as Test;
if(t.Name=="t1")
args.Cancled = true;
}
}
class Test
{
//委托参数
public class testEventArgs
{
public bool Cancled=false;
}
//委托
public delegate void dTest(object sender, testEventArgs args);
//事件
public event dTest onTest;
//函数
public void DoTest(string s)
{
if (this.onTest != null)
{
//参数判断
testEventArgs arg = new testEventArgs();
this.onTest(this, arg);
if (arg.Cancled == true)
{
return;
}
}
Console.WriteLine(s);
}
//成员变量 或 属性
public string Name = string.Empty;
}
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jinjazz/archive/2009/02/17/3902863.aspx
view plaincopy to clipboardprint?
using System;
namespace ConsoleApplication3
{
class Program
{
//一个较为完整的委托-事件 模型应用
//by jinjazz
//http://blog.csdn.net/jinjazz
//模型表达
//Test对象执行DoTest方法,回调onTest事件,通过参数控制输出
static void Main(string[] args)
{
Test t1 = new Test();
t1.Name = "t1";
t1.onTest += new Test.dTest(t_onTest);
Test t2 = new Test();
t2.Name = "t2";
t2.onTest += new Test.dTest(t_onTest);
t1.DoTest("aaaa");
t2.DoTest("bbbb");
Console.Read();
}
static void t_onTest(object sender, Test.testEventArgs args)
{
Test t = sender as Test;
if(t.Name=="t1")
args.Cancled = true;
}
}
class Test
{
//委托参数
public class testEventArgs
{
public bool Cancled=false;
}
//委托
public delegate void dTest(object sender, testEventArgs args);
//事件
public event dTest onTest;
//函数
public void DoTest(string s)
{
if (this.onTest != null)
{
//参数判断
testEventArgs arg = new testEventArgs();
this.onTest(this, arg);
if (arg.Cancled == true)
{
return;
}
}
Console.WriteLine(s);
}
//成员变量 或 属性
public string Name = string.Empty;
}
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jinjazz/archive/2009/02/17/3902863.aspx
相关文章推荐
- C#事件和委托的基础知识模型收藏
- C#事件和委托的基础知识模型
- C#事件和委托的基础知识模型
- C# 基础知识系列]专题六:.net WinForm 控件的事件委托剖析
- C#基础知识梳理系列五:委托与事件(上)
- C#基础知识回顾--委托事件
- C#基础知识梳理系列五:委托与事件(下)
- C#基础知识梳理系列五:委托与事件(上)
- C#基础知识梳理系列五:委托与事件
- C#基础加强第五天--委托,事件与反射
- C#基础-委托与事件
- [C# 基础知识梳理系列]专题四:事件揭秘
- C#基础精华07(委托事件,委托的使用,匿名方法)
- [C# 基础知识系列]专题三:如何用委托包装多个方法——委托链
- C#基础原理拾遗——面试都爱问的委托和事件(纠正)
- C#基础系列问题三委托知识总结2
- [C# 基础知识系列]专题二:委托的本质论
- C#基础精华07(委托事件,委托的使用,匿名方法)
- [C# 基础知识系列]专题一:深入解析委托——C#中为什么要引入委托
- C#基础系列--C#中委托与事件(三)