我可以将事件处理程序添加到字符串中吗?

本文关键字:字符串 添加 事件处理 程序 我可以 | 更新日期: 2023-09-27 17:55:15

我只是想知道当变量(如 int、字符串等)的值发生变化时是否可以"触发"某些东西?

假设我有一个显示String MyString值的TextBox tb。所以我想做的是这样的:

MyString.ValueChanged += new EventHandler(UpdateTextBox);
public void UpdateTextBox(object sender, EventArgs e)
{
tb.Text = MyString;
}

为了不必在多行中更新文本框。有什么办法可以做到这一点吗?谢谢!

我可以将事件处理程序添加到字符串中吗?

string永远不会改变。它是不可变的(除了在引擎盖下工作的邪恶代码)。如果MyString是一个属性,那么您当然可以有一个MyStringChanged事件,并将其挂接到事件处理程序。

private string myString;
public string MyString {
    get { return myString; }
    set {
       if(myString != value) {
          myString = value;
          var handler = MyStringChanged;
          if(handler!=null) handler(this,EventArgs.Empty);
       }
    }
}
public event EventHandler MyStringChanged;

intstring 等值是不可变的。他们无法改变。