首页 > 解决方案 > 如何从字符串列表类型的服务字段分配响应的字符串类型列表

问题描述

我只是好奇我是否需要先创建一个 Type 对象?类型是类型List<string>

public List<string> Types { get ; set ;}

我很好奇我是否必须做Types = new List<string>();然后分配给它?在下面的代码中。

Response response = null;

if (serviceResponse!= null)
{
    response = new Response 
    {
        Message = serviceResponse.Message,
        Types = serviceResponse.Types
    };
}

标签: c#listweb-servicesobjectc#-4.0

解决方案


如果您打算使用该实例,则只需创建一个实例。例如:

Response response = new Response();
response.Types.Add(someObject);

在上面的代码中,如果构造Response对象没有初始化Types字段,NullReferenceException则会抛出 a。但是,在您拥有的代码中,您不使用该字段,而是分配给该字段:

Response response = new Response 
{
    Message = serviceResponse.Message,
    Types = serviceResponse.Types
};

如果您Types在创建对象时初始化该字段,该实例几乎会立即被丢弃并替换为您分配给它的实例。

所以,不,在您提供的示例中,技术上不需要初始化属性。 但是,请记住,通过不初始化属性,类假设使用代码初始化它。在这一示例中,该假设得到了支持。但是未来的例子呢?将来会一直维持这个假设吗?你能保证吗?

一般来说,初始化集合属性是个好主意。这不是必需的,不这样做确实会带来非常小的性能改进,因为您不是为了立即将其丢弃并替换它而实例化一个对象。但风险在于您的消费代码必须始终记住执行此初始化。


推荐阅读