using System; namespace ConsoleApplication7 { class Program { static void Main(string[] args) { people p = new people("Name1"); p.PropertyChanged += new EventHandler(p_PropertyChanged); //注册事件处理函数 p.Name = "Name2"; Console.ReadKey(); } static void p_PropertyChanged(object sender, EventArgs e) //事件的处理函数 { Console.WriteLine("NamePropertyChanged:"+(sender as people).Name); } } class people { public event EventHandler PropertyChanged; private string name=String .Empty; public people(string name) { this.name = name; } public string Name { get { return name; } set { name = value; this.OnPropertyChanged(new EventArgs()); //每次改变Name值调用方法; } } private void OnPropertyChanged(EventArgs eventArgs) { if (this.PropertyChanged != null) //判断事件是否有处理函数 { this.PropertyChanged(this, eventArgs); } } } }
//请参考
从你写的程序来看 从类的外部是不可能改变属性的值了,因为你的这两个属性都是只读的, 只能在类的内部改变_a _b的值那样你写这个类的时候 你应该很清楚哪里改变了_a _b的值 真接调用相应的改变方法就行了 所以你写的这个类 要让属性在类外部也能改变其值 不然属性值的改变只在类内部并触发事件也就没什么意义了