C# 有没有一种方法可以同时创建多个(几乎相同的)对象?
我为这个措辞拙劣的标题道歉,但我真的不太确定该怎么说。大约一小时前,我问了一个关于函数的类似问题,但这与对象的初始化有关,特别是在使用WinForms时。相关代码:C# 有没有一种方法可以同时创建多个(几乎相同的)对象?,c#,winforms,object,optimization,formatting,C#,Winforms,Object,Optimization,Formatting,我为这个措辞拙劣的标题道歉,但我真的不太确定该怎么说。大约一小时前,我问了一个关于函数的类似问题,但这与对象的初始化有关,特别是在使用WinForms时。相关代码: // // textBoxCTotal // this.textBoxCTotal.Cursor = System.Windows.Forms.Cursors.Default; resources.ApplyResources(this.textBo
//
// textBoxCTotal
//
this.textBoxCTotal.Cursor = System.Windows.Forms.Cursors.Default;
resources.ApplyResources(this.textBoxCTotal, "textBoxCTotal");
this.textBoxCTotal.Name = "textBoxCTotal";
this.textBoxCTotal.TabStop = false;
//
// textBoxBTotal
//
this.textBoxBTotal.Cursor = System.Windows.Forms.Cursors.Default;
resources.ApplyResources(this.textBoxBTotal, "textBoxBTotal");
this.textBoxBTotal.Name = "textBoxBTotal";
this.textBoxBTotal.TabStop = false;
//
// textBoxRTotal
//
this.textBoxRTotal.Cursor = System.Windows.Forms.Cursors.Default;
resources.ApplyResources(this.textBoxRTotal, "textBoxRTotal");
this.textBoxRTotal.Name = "textBoxRTotal";
this.textBoxRTotal.TabStop = false;
是否有可能一次初始化这3个对象(如果名称正确的话),从而将代码缩减近66%?我觉得必须有一种更紧凑的方式
我很高兴澄清任何措辞,因为我相信我可能没有尽可能清楚
谢谢。当然有:这叫做“重构”: 您可以这样使用它:
InitializeTextBox(this.textBoxBTotal, nameof(this.textBoxBTotal));
但是请注意,这是使用windows窗体设计器自动生成的代码。如果您编辑了该代码,则以后不可能通过编辑器进行更多更改。所以,在这种情况下,也许使用这种复制是可以的。这是来自自动生成的设计器类的代码吗?正如SeM所怀疑的:如果这是设计器代码:不要碰它!如果您自己编写:您可以创建一个接受TextBox参数的函数,并执行如下所示的设置。然后将相应的文本框传递给该函数。它不会是“立刻”的,但你会大大减少代码重复。我想我之所以不想使用它,是因为:如果我在设计器中进行更改,它会重新生成以前存在的整个代码结构?或者干脆破坏设计师?没错。如果从设计器中更改自动生成的代码,您永远不知道会破坏什么。因此,为了获得更好的工具:别管它。但是在不同的环境中,如果没有涉及设计器,您当然可以(也应该)对其进行优化。在任何情况下都不要接触设计器生成的代码,尤其是使用
注释的方法不要使用代码编辑器修改此方法的内容。如果你这样做了,你会后悔的。旁注-你可以在方法中使用nameof
,这样你就不必再传递文本框的名称了。@ZoharPeled-不,你不能-这将成为“textbox”,这不是OP想要的nameof(textBox)
将是“textBox”。完全同意-除了方法名-在本例中InitialiseTextBox可能更清晰。
InitializeTextBox(this.textBoxBTotal, nameof(this.textBoxBTotal));