如何从字符串类型列表的服务字段中分配响应的字符串类型列表

时间:2019-01-13 23:30:54

标签: c# list web-services object c#-4.0

我只是好奇是否需要首先创建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
    };
}

1 个答案:

答案 0 :(得分:2)

仅当计划使用该实例时才需要创建该实例。例如:

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

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

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

如果在对象创建过程中初始化Types字段,则该实例将几乎立即被丢弃并替换为您为其分配的实例。

因此,不,从技术上讲,您提供的示例不需要初始化属性。 但是,请记住,通过不初始化属性,该类将假定使用代码对其进行初始化。在这个例子中,假设是成立的。但是未来的例子呢?将来会始终坚持这种假设吗?你能保证吗?

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