簡體   English   中英

參數問題新增的泛型函數

[英]Generic function new with parameter problem

嗨,我有一個通用功能,如下所示。 可以通過調用來顯示表單

showForm(ch);

IT工作於第二個函數(不帶參數的新函數),但是如果我想像第三個函數(帶參數的新函數)那樣在構造函數中顯示帶有參數的窗體,那我就做不到。任何人都知道如何會嗎

       void showForm<T>(T frm)  where T :Form, new()
        {
            if (frm == null)
            {
                frm = new T();
            }
            frm.MdiParent = this;
            frm.Show();
        }


        //Works for this
        public frmChild2()
        {
            InitializeComponent();
            ChildToolStrip = toolStrip1;
           // toolStrip1.Visible = false;
        }

        //Does not Work for this
        public frmChild2(string title)
        {
            InitializeComponent();
            ChildToolStrip = toolStrip1;
            Text = title;
            // toolStrip1.Visible = false;
        }

使用Where T : new()告訴編譯器T具有public無參數構造函數。

第二種形式沒有這樣的構造函數。

從顯示的內容來看,並不需要真正在構造函數中設置標題( showForm方法甚至不知道要設置什么?)。

由於T也被約束為Form您可以在實例化Form之后設置frm.Text =

new()保證T將具有不帶參數的公共構造函數-通常,如果需要創建該類型的新實例,則可以使用此約束。 您不能直接將任何東西傳遞給它。

檢查一下

將參數傳遞給模板類型的C#通用new()

暫無
暫無

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

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