为了账号安全,请及时绑定邮箱和手机立即绑定

如何使过载变得更简单

如何使过载变得更简单

C#
慕标5832272 2023-07-09 17:45:15
我有一个帮助程序类,可以处理工具栏的一些方法。现在我已经创建了 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();    }各种方法,如切法。有没有更简单、更干净的方法来做到这一点?
查看完整描述

1 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

您应该使用 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();

    }

}


查看完整回答
反对 回复 2023-07-09
  • 1 回答
  • 0 关注
  • 101 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信