标签:Char Console 067 C# char Curr CurrChar event chartester
一、概述
委托是类型,事件是成员,事件其实是类中一个private的委托变量和add,remove两个方法。子类无法调用父类的事件。
二、使用
- 事件数据类
- 定义委托
- 声明委托变量
- 对象类
- 调用
delegate void CharEventHandler(object sender, CharEventArgs e); //定义委托
public class CharEventArgs : EventArgs //定义一个事件数据类
{
public char CurrChar;
public CharEventArgs(char CurrChar)
{
this.CurrChar = CurrChar;
}
}
class CharChecker
{
char curr_char;
public event CharEventHandler CharTest;//公布事件(声明委托变量)
public char Curr_Char
{
get { return curr_char; }
set
{
if (CharTest != null)
{
CharEventArgs args = new CharEventArgs(value);
CharTest(this, args);// 触发事件(执行委托方法),传递实际参数值到事件处理程序。
curr_char = args.CurrChar;
}
}
}
}
static void Main()
{
CharChecker chartester = new CharChecker();
chartester.CharTest += (Source, e) =>//将事件与事件处理函数绑定(实例化委托)
{
{
if (e.CurrChar == 'x' || e.CurrChar == 'X')
{
Console.Write("触发的字符是x,");
Console.Write("把x替为:");
e.CurrChar = '?';
}
else
Console.Write("触发的字符不是x,");
}
};
chartester.Curr_Char = 'a'; //设置属性值时,触发事件
Console.WriteLine("事件处理结果:{0}", chartester.Curr_Char);
chartester.Curr_Char = 'b';
Console.WriteLine("事件处理结果:{0}", chartester.Curr_Char);
chartester.Curr_Char = 'x';
Console.WriteLine("{0}", chartester.Curr_Char);
Console.WriteLine();
}
三、使用泛型委托 EventHandler
在.Net2.0以上,可用泛型,而不需要定义charEventHandler委托。
public event EventHandler<CharEventArgs> CharTest;
标签:Char,Console,067,C#,char,Curr,CurrChar,event,chartester 来源: https://www.cnblogs.com/springsnow/p/16272337.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。