这句代码是什么意思?public event PropertyChangedEventHandler PropertyChanged;
这个是什么意思?PropertyChanged到底是event类型还是PropertyChangedEventHandler类型?...
这个是什么意思?
PropertyChanged到底是event类型还是PropertyChangedEventHandler类型? 展开
PropertyChanged到底是event类型还是PropertyChangedEventHandler类型? 展开
展开全部
是事件委托。
所谓“事件委托”,一个事件的本质是一个委托(因为事件是委托类型的)。而委托的好处在于它可以动态调用不同类之间具备相同函数签名(函数参数顺序、类型、个数相同),且函数返回值必须完全相同的函数。我先举一个委托的例子:
namespace A
{
public delegate void Say(); //委托
class Dog
{
public void Say()
{
Console.WriteLine("汪汪!");
}
}
class Cat
{
public void Say()
{
Console.WriteLine("喵喵!");
}
}
public class MainTest
{
static void Main(string[] args)
{
Say s = new Say(new Dog().Say); //告诉委托调用Dog类中的Say方法
s += new Cat().Say; //同时告诉委托调用Cat类中的Say方法
s();
}
}
}
Dog和Cat类毫无联系,但是却可以通过委托连接起来关系,我们说委托具备“跨类调用”函数的特性。
因此,我们再来看一个事件的应用:
public class MyClass
{
public event EventHandler MyEvent = null; //EventHandler是一个系统委托,一般用于定义事件
………………
public void MyMethod() //这是一个引发事件的方法,一旦调用该方法,必然触发事件
{
………………
//引发一个事件!!
MyEvent(this,null);
}
}
主函数中:
MyClass mc = new MyClass();
mc.MyEvent+=new EventHandler(MyEvent_Raised);
………………
static void MyEvent_Raised(object sender, EventArgs e)
{
……………… //做你想做的事情
}
事件的实例化是在使用到包含这个事件的实体类时候(比如在主函数需要调用的时候)。通过+=进行实体化;然后当调用实体的MyMethod方法时候,这个方法将引发一个事件,也就是触发了绑定的MyEvent_Raised方法。
所谓“事件委托”,一个事件的本质是一个委托(因为事件是委托类型的)。而委托的好处在于它可以动态调用不同类之间具备相同函数签名(函数参数顺序、类型、个数相同),且函数返回值必须完全相同的函数。我先举一个委托的例子:
namespace A
{
public delegate void Say(); //委托
class Dog
{
public void Say()
{
Console.WriteLine("汪汪!");
}
}
class Cat
{
public void Say()
{
Console.WriteLine("喵喵!");
}
}
public class MainTest
{
static void Main(string[] args)
{
Say s = new Say(new Dog().Say); //告诉委托调用Dog类中的Say方法
s += new Cat().Say; //同时告诉委托调用Cat类中的Say方法
s();
}
}
}
Dog和Cat类毫无联系,但是却可以通过委托连接起来关系,我们说委托具备“跨类调用”函数的特性。
因此,我们再来看一个事件的应用:
public class MyClass
{
public event EventHandler MyEvent = null; //EventHandler是一个系统委托,一般用于定义事件
………………
public void MyMethod() //这是一个引发事件的方法,一旦调用该方法,必然触发事件
{
………………
//引发一个事件!!
MyEvent(this,null);
}
}
主函数中:
MyClass mc = new MyClass();
mc.MyEvent+=new EventHandler(MyEvent_Raised);
………………
static void MyEvent_Raised(object sender, EventArgs e)
{
……………… //做你想做的事情
}
事件的实例化是在使用到包含这个事件的实体类时候(比如在主函数需要调用的时候)。通过+=进行实体化;然后当调用实体的MyMethod方法时候,这个方法将引发一个事件,也就是触发了绑定的MyEvent_Raised方法。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询