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

C#初始化泛型List<T>类及私有set属性问题求助

问题分析与解决

核心问题

  1. 类设计逻辑混乱:你让SendResponse继承了List<SendResponse>,把"单个响应对象"和"响应对象集合"的职责混在一起,不符合面向对象的设计原则。
  2. 空引用异常直接诱因:sendResponses被初始化为null,没有完成实例化就调用Add方法,必然触发空引用异常。

修正步骤

1. 重构SendResponse类

去掉不必要的继承,让它成为单纯的实体类:

[DataContract]    
public class SendResponse
{
    public SendResponse(string messageId, string recipient)
    {
        MessageId = messageId;
        Recipient = recipient;
    }

    [DataMember]
    public string MessageId { get; private set; }
    
    [DataMember]
    public string Recipient { get; private set; }
}

2. 正确创建列表并添加元素

实例化List<SendResponse>类型的对象后,再循环添加元素:

// 实例化空列表,而非赋值为null
List<SendResponse> sendResponses = new List<SendResponse>();

foreach (var result in results)
{
    sendResponses.Add(new SendResponse(result.MessageId, result.To));
}

特殊场景补充

如果是WCF序列化等特殊场景需要让集合类支持DataContract,可以单独定义集合类:

[DataContract]
public class SendResponseList : List<SendResponse>
{
    // 按需添加自定义构造方法或其他逻辑
}

使用时:

SendResponseList sendResponses = new SendResponseList();
foreach (var result in results)
{
    sendResponses.Add(new SendResponse(result.MessageId, result.To));
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 07:07:02