猿问

如何使过载变得更简单

我有一个帮助程序类,可以处理工具栏的一些方法。现在我已经创建了 5 个具有不同重载的构造函数。我的问题是,如何使这个构造函数重载更简单?我这样做的方式是有效的,但如果我需要实现 10 个 RichTextBox,我不想为每个可能的 RichTextBox 创建重载并处理方法中的每个人。我相信有一种更简单的方法,但无论如何,我可以解决这个问题。


我尝试创建一个列表,但收到错误,因为我无法创建逻辑命名空间的列表。


    public class RichtTextBoxHelper

    {

    private RichTextBox _textBox;

    private RichTextBox _textbox2;

    private RichTextBox _textbox3;

    private RichTextBox _textbox4;

    private RichTextBox _textbox5;


    public RichtTextBoxHelper(RichTextBox textBox)

    {

        _textBox = textBox;

    }

    public RichtTextBoxHelper(RichTextBox textBox, RichTextBox textbox2)

    {

        _textBox = textBox;

        _textbox2 = textbox2;

    }


    public RichtTextBoxHelper(RichTextBox textBox, RichTextBox textbox2, RichTextBox textbox3)

    {

        _textBox = textBox;

        _textbox2 = textbox2;

        _textbox3 = textbox3;

    }


    public RichtTextBoxHelper(RichTextBox textBox, RichTextBox textbox2, RichTextBox textbox3, RichTextBox textbox4)

    {

        _textBox = textBox;

        _textbox2 = textbox2;

        _textbox3 = textbox3;

        _textbox4 = textbox4;

    }


    public RichtTextBoxHelper(RichTextBox textBox, RichTextBox textbox2, RichTextBox textbox3, RichTextBox textbox4, RichTextBox textbox5)

    {

        _textBox = textBox;

        _textbox2 = textbox2;

        _textbox3 = textbox3;

        _textbox4 = textbox4;

        _textbox5 = textbox5;

    }


    public void CutClick()

    {

        _textBox.Cut();

        _textbox2.Cut();

        _textbox3.Cut();

        _textbox4.Cut();

        _textbox5.Cut();

    }

各种方法,如切法。


有没有更简单、更干净的方法来做到这一点?


慕标5832272
浏览 102回答 1
1回答

汪汪一只猫

您应该使用 s 数组RichTextBox:private RichTextBox[] textBoxes;现在你只需要一个构造函数:public RichtTextBoxHelper(params RichTextBox[] textBoxes) {    this.textBoxes = textBoxes ?? throw new ArgumentNullException(nameof(textBoxes));}如果存在可以处理的文本框的最大数量,只需进行检查:public RichtTextBoxHelper(params RichTextBox[] textBoxes) {    if (textBoxes is null)    {        throw new ArgumentNullException(nameof(textBoxes));    }    if (textBoxes.Length > maxTextBoxes) :        throw new ArgumentException("Too many text boxes!", nameof(textBoxes))    }    this.textBoxes = textBoxes;}该CutClick方法可以简单地是:public void CutClick() {    foreach(var textBox in textBoxes) {        textBox.Cut();    }}
随时随地看视频慕课网APP
我要回答