You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#泛型类构造函数中初始化泛型类型实例?

问题与解决方案:在泛型类构造函数中自动初始化泛型属性

我定义了如下泛型类:

public class ApiResult<T> where T : class
{
    public string CorrelationId { get; set; }
    public string Message { get; set; }
    public bool IsSuccess { get; set; }
    public T Result { get; set; }

    public ApiResult() { }
}

使用时必须手动为Result属性赋值泛型类型实例:

ApiResult<myPropClass> someVar = new ApiResult<myPropClass>();
someVar.Result = new myPropClass();

我想知道有没有办法在泛型类的构造函数里直接初始化Result,比如这样:

public ApiResult(){
    // 初始化实例
    this.Result = new T();
}

解决方案

修改泛型约束,添加new()约束(要求T必须包含无参构造函数),即可在构造函数中直接实例化T类型:

public class ApiResult<T> where T : class, new()
{
    public string CorrelationId { get; set; }
    public string Message { get; set; }
    public bool IsSuccess { get; set; }
    public T Result { get; set; }

    public ApiResult() { this.Result = new T(); }
}

使用时无需再手动初始化Result,直接操作即可:

ApiResult<myPropClass> someVar = new ApiResult<myPropClass>();
someVar.Result.prop = "your value";

内容的提问来源于stack exchange,提问作者vantian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 10:05:24