繁体   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