gpt4 book ai didi

c# - 通用构造函数 : T entity = new T();

转载 作者:行者123 更新时间:2023-11-30 14:37:54 24 4
gpt4 key购买 nike

我有以下 winforms 类:

class EntityEditorForm<T>: System.Windows.Forms.Form 
where T: ICloneable<T> {}

class EntityCollectionEditorForm<T> : System.Windows.Forms.Form
where T: ICloneable<T> {}

第一个表单类是 <T> 的编辑器根据 T 的类型在运行时创建控件。

第二个是 <T> 集合的管理者并具有添加、编辑和删除功能。该集合显示在一个 ListView 控件中,其中包含使用自定义属性通过反射填充的字段。

添加和编辑按钮的代码如下所示:

private void buttonEdit_Click (object sender, System.EventArgs e)  
{
T entity = default(T);
entity = (T) this.listView.SelectedItems[0].Tag;
new EntityEditor<T>(entity).ShowDialog(this);
}

private void buttonEdit_Click (object sender, System.EventArgs e)
{
T entity = new T(); //This is the code which is causing issues
entity = (T) this.listView.SelectedItems[0].Tag;
new EntityEditor<T>(entity).ShowDialog(this);
}

default(T)在编辑的情况下工作,但我在添加场景时遇到问题。 T entity = new T();似乎不合法。

最佳答案

如果您的类型包含无参数构造函数,您可以在泛型类型 T 上添加约束以允许通过此无参数构造函数进行实例化。为此,请添加约束:

where T : new()

关于 Constraints on Type Parameters 的 MSDN 文章.

关于c# - 通用构造函数 : T entity = new T();,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8786388/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com