构造函数为什么被多次调用

本文关键字:调用 为什么 构造函数 | 更新日期: 2023-09-27 18:13:14

我正在silverlight工作。我创建了一个文本框,当用户更改任何文本时,它应该在文件顶部显示"*",并在单击保存按钮时消失。

我的代码对于一个文本框工作得很好,但是当我创建第二个文本框(在第一个文本框之后)时,我发现构造函数被调用两次而不是一次。当我创建第三个文本框(在两个之后)构造函数被调用3次而不是一次。(这个文本框是在一个按钮点击上创建的,在我的GUI中动态地有一些文字写在上面,当我在该文本中做一些改变时,它在顶部显示"*",并在保存它时消失)。

而我希望它被调用1次,如果我一次添加1个文本框。我的代码是:

private bool modified;
public bool Modified
 {
    get { return modified; }
    set { modified = value; OnPropertyChanged("Modified"); }
 }
public ClassConstructor(AnotherClass pv) 
{
    MessageBox.Show("Number of call check");
    setStar(false);
    this.isModified = false;
}
private void setStar(bool modified) 
{
    Tab = this.FileName;
    if (modified == false)
    {
        Tab += "";
    } 
  else 
  {
        Tab += " *";
    }
    Modified = modified;
}
public void TextChanged(object sender, TextChangedEventArgs e)
{
    TextBox tb = (TextBox) sender;
    setStar(!TextData.Equals(tb.Text));
}
public void SaveCode(object para) 
{
    TextData.txt = txt;
    setStar(false);
}

为什么这个构造函数被调用这么多次?(我的意思是为什么我的MessageBox的次数如果我创建第四个文本框)?

构造函数为什么被多次调用

构造函数创建该类的一个实例。因此,每当您创建一个新实例(在本例中是一个新的TextBox)时,都会调用构造函数来创建该对象实例。这是构造器To Be Called when you create an object of that class的唯一目的。因此,将执行该构造函数中的代码。因为你在构造函数中显示MessageBox,你看到它5次,5个新对象和4个新对象4次。正如wiki中所说-

实例构造函数(有时称为. tor)用于创建并初始化任何实例成员变量表达式用于创建类的对象。

我的第一个建议-学习构造函数是什么,因为除非你知道构造函数是什么,否则你永远不会明白为什么会发生这种情况。BTW,这不是错误,这是面向对象编程的特点,每当你创建一个新的实例,构造函数将被调用。

一个很好的起点将在这里-

构造函数(面向对象编程)

相关文章: