簡體   English   中英

如何使過載更簡單

[英]How can I make overload simpler

我有一個幫助程序類,用於處理工具欄的某些方法。 現在,我創建了5個具有不同重載的構造函數。 我的問題是,如何使這種構造器過載更簡單? 我的工作方式有效,但是如果我需要實現10個RichTextBoxes,我不想為每個可能的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();
    }

各種方法都喜歡切一。

有沒有更簡單,更干凈的方法來做到這一點?

您應該使用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();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM