在学习C#的事件机制时碰到的问题(100分)

  • 主题发起人 主题发起人 CooKY
  • 开始时间 开始时间
C

CooKY

Unregistered / Unconfirmed
GUEST, unregistred user!
我是个C#入门者,菜鸟,在学习到C#中的事件的时候真的犯了迷糊,怎么这么复杂啊。
首先,我有一个假设,我要定义一个类Class People,内有个变量int age,我想达到这么个效果,一旦age 发生改变的时候,就调用一个事件处理程序,比如打印“年龄改变了",而不用手工调用事件激发指令,可以吗?
如果可以怎么做到呢??
诸位高手不要吝啬,教教小弟吧…………,绝不吝分,谢谢:)
 
看看C#的书,有关代理的内容
 
AGE设为属性,通过SET方法来调用出发的事件
 
private int age;
public int Age
{
get{
return age;
}
set{
if (age <> value)
{
age = value;
触发事件.
}
}
}
 
谢谢两位,用你们的方法,我试了果然是牛B,成功了。
但是我还有一个问题呢,因为我发现如果这样的话,只要用委托就可以了,不需要用EVENT这个关键字也能实现作用啊,请问那么event关键字有什么作用呢???
请告诉我……
 
我来告诉你完整的写发
public class People
{
pivate int age;
public People(int age)
{this.age=age;}//构造涵数
public delegate void AgeChangedEventHandler(object sender,AgeChangedEventArgs e);
//声明委托类型
public event AgeChangedEventHandler AgeChanged;//声明事件
public int Age //公报属性
{
get{return age;}
set
{ age=value;
if(AgeChanged!=null) //触发事件
{
AgeChangedEventArgs e= new AgeChangedEventArgs(age);
AgeChanged(this,e)
}
}
}
//事件类
public AgeChangedEventArgs:EventArgs
{
private int age;
public AgeChangedEventArgs(int age)
{this.age=age;}
public int age{get {return age;}
}
}
//--------调用
People p=new People(23);
p.AgeChanged+=new AgeChangedEventHandle(MyClass_AgeChanged);

private MyClass_AgeChanged(object sender,AgeChangedEventArgs)
{
Console.WriteLn("Age Changed to {0}",e.age);
}
 
我想看了上面的例子,你的疑问应该可以解决了.
你也应该了解委托和event有什么用了.
 
thanks everyone!
 
后退
顶部