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
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的值 真接调用相应的改变方法就行了
所以你写的这个类 要让属性在类外部也能改变其值 不然属性值的改变只在类内部并触发事件也就没什么意义了