C# windows窗体用户控件属性在生成时执行代码

C# windows窗体用户控件属性在生成时执行代码,c#,winforms,C#,Winforms,我在C#Windows窗体上有一个用户控件。每次我构建项目时,都会触发属性上的代码并显示消息框。有人知道为什么吗 public string Name { get { if(xpto != null) { return mystring; } else { MessageBox.Show("message"); return

我在C#Windows窗体上有一个用户控件。每次我构建项目时,都会触发属性上的代码并显示消息框。有人知道为什么吗

public string Name 
{
    get
    {
        if(xpto != null) 
        { 
            return mystring;
        }
        else
        {
            MessageBox.Show("message");
            return string.Empty;
        }
    }
}
在我看来,似乎在调用属性之前没有设置“xpto”。只要未设置“xpto”(或已设置为null),代码将运行“else”分支

这意味着,在初始化“xpto”(或者,您自己将“xpto”设置为null)之前,代码中的某些内容正在调用您的属性“Name”。因此,当调用“Name”时,“xpto”将为null,并且消息框将显示出来

编辑:
此外,如果它发生在构建时,可能是因为设计者本身不会设置“xpto”。相反,它使用它关心的属性,如“Name”、“Text”等。因此,当设计器调用“Name”时,它事先没有考虑到“xpto”,当设计器到达属性“Name”时,“xpto”将为空。

当您构建或运行时?我不认为这在构建期间是可能的。需要更多关于“xpto”的信息吗。我的假设是,您没有初始化对象,因此也没有初始化消息。在我们看到所有代码之前,我们无法确定。当然,当您构建时,这是可能的。设计器将查询某些属性以构造窗体的视图。此代码的目的是什么?为什么在getter中显示消息框?停止这样做,你就能解决你的问题。嗨@CarbineCoder。当我建造时,是的。xpto=任何私有属性。Hi@CodyGray。这只是一个示例代码。事实上,我没有在属性上显示消息框。谢谢你的回复。我知道我应该在评论中等待一些澄清,但我还没有代表发表评论。如果这是个问题,很抱歉。