c# - 如何在泛型类型的构造函数中分配泛型类型的成员?

标签 c# generics

如何在泛型 C# 类中赋值?

public class GeneralWrapper<T>
{
    public GeneralWrapper()
    {
       Datas = new ?
    }

    public T Datas { get; set; }
}

我正在为 List 对象(任何对象)编写通用包装类。所以我可以像这样使用这个类

GeneralWrapper<List<string>> _wrapper = new GeneralWrapper<List<string>>();
_wrapper.Datas.Add("hello")

但是数据需要在构造函数中自动初始化

Datas = new Datas<t>();

看来我不必在创建 GeneralWrapper 类后创建新的。

最佳答案

你可以使用 constraint在你的通用类型上:

public class GeneralWrapper<T> where T: new()
{
    public GeneralWrapper()
    {
       Datas = new T();
    }

    public T Datas { get; set; }
}

new() 约束表明T 必须是具有默认的无参数构造函数的类型。这在编译时得到验证,并允许您从通用类中实例化此对象。

关于c# - 如何在泛型类型的构造函数中分配泛型类型的成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9344076/

相关文章:

c# - 如何访问 NSMutableArray 索引 Xamarin.ios

c# - 如何使黑色变成透明颜色?

c# - 如何在程序关闭后运行操作?

typescript - 泛型函数中的属性类型

c# - 在 Powershell 中,如何使用字节数组作为 C# 通用类之一的键类型?

c# - System.Collections.Generic.List<T>.ToArray() 和 System.Linq.Enumerable.ToArray<T>() 之间的区别?

c# - 方法的不同

c# - 由于泛型类型推断的限制,无法使用泛型来改进 API

Swift 创建函数闭包,支持缩短的美元符号语法

swift - 返回类型为 Self 而不是 Array 的 CollectionType 扩展