using System;
using System.Collections.Generic;
using System.Text;namespace ConsoleApplication1
{
delegate void CharEventHandler(object sender,CharEventArgs e); //为事件定义一个代理
public class CharEventArgs : EventArgs //创建一个包含事件信息的类
{
public char CurrChar;
public CharEventArgs(char CurrChar)
{
this.CurrChar=CurrChar;
}
}
class CharChecker //创建一个包含事件成员的类
{
private char curr_char;
public event CharEventHandler CharTest; //定义事件成员
public char Curr_Char //创建触发事件的的方法或属性成员
{
get
{
return curr_char;
}
set
{
if (CharTest != null)
{
CharEventArgs myeven = new CharEventArgs(value);
curr_char = myeven.CurrChar;
}
}
}
}
class Program
{
static void Main(string[] args)
{
CharChecker chartester = new CharChecker();
chartester.CharTest += new CharEventHandler(Change_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(); }
static void Change_X (object source ,CharEventArgs e)
{
if(e.CurrChar == 'x')
{
Console.Write("触发的字母是 x ,");
Console.Write ("把 x 替换成 :");
e.CurrChar = '?';
}
else
Console.Write ("触发的字符不是 x,");
}
}
}
这个程序的输出为什么会是:
事件的处理结果是 : a
事件的处理结果是 : b
x
{
CharEventArgs myeven = new CharEventArgs(value);
curr_char = myeven.CurrChar;
}
没有地方触发??/
{
if (CharTest != null)
{
CharEventArgs myeven = new CharEventArgs(value);
curr_char = myeven.CurrChar;
CharTest(this,myeven);//少了这一行
}
}
CharTest(this,myeven);//少了这一行
”
这一行是用来什么 的?