
AI
的文章:
在软件开发的世界中,我们经常需要处理数据的变化和通知。为了实现这一目标,.NET Framework 提供了两个重要的接口:IObservablecsharppublic class Person{ private string name; private int age; public string Name { get { return name; } set { name = value; NameChanged?.Invoke(this, EventArgs.Empty); } } public int Age { get { return age; } set { age = value; AgeChanged?.Invoke(this, EventArgs.Empty); } } public event EventHandler NameChanged; public event EventHandler AgeChanged;}public class Observer{ public void Subscribe(Person person) { person.NameChanged += PersonNameChanged; person.AgeChanged += PersonAgeChanged; } private void PersonNameChanged(object sender, EventArgs e) { Console.WriteLine("Name has changed"); } private void PersonAgeChanged(object sender, EventArgs e) { Console.WriteLine("Age has changed"); }}public class Program{ public static void MAIn() { Person person = new Person(); Observer observer = new Observer(); observer.Subscribe(person); person.Name = "John"; person.Age = 30; }}在上面的代码中,我们定义了一个 Person 类,其中包含了两个属性 Name 和 Age,并使用事件机制来通知属性的变化。我们还定义了一个 Observer 类,它订阅了 Person 对象的变化事件,并在事件发生时输出相应的信息。接下来,我们来看看如何使用 INotifyPropertyChanged 来实现相同的功能:csharppublic class Person : INotifyPropertyChanged{ private string name; private int age; public string Name { get { return name; } set { name = value; OnPropertyChanged(nameof(Name)); } } public int Age { get { return age; } set { age = value; OnPropertyChanged(nameof(Age)); } } public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); }}public class Observer : INotifyPropertyChanged{ public void Subscribe(Person person) { person.PropertyChanged += PersonPropertyChanged; } private void PersonPropertyChanged(object sender, PropertyChangedEventArgs e) { Console.WriteLine($"{e.PropertyName} has changed"); }}public class Program{ public static void MAIn() { Person person = new Person(); Observer observer = new Observer(); observer.Subscribe(person); person.Name = "John"; person.Age = 30; }}在上面的代码中,我们将 Person 类实现了 INotifyPropertyChanged 接口,并在属性发生变化时调用 OnPropertyChanged 方法。Observer 类订阅了 Person 对象的 PropertyChanged 事件,并在事件发生时输出相应的信息。通过本文的介绍,我们了解到了 IObservableCopyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号