как присвоить списку строковый тип ответа из сервисного поля типа строковый список - PullRequest
0 голосов
/ 14 января 2019

Мне просто любопытно, нужно ли мне сначала создать объект типа? Тип имеет тип 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 голосов
/ 14 января 2019

Вам нужно создать экземпляр, только если вы планируете использовать этот экземпляр. Например:

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

В приведенном выше коде, если создание объекта Response не инициализирует поле Types, тогда будет выброшено NullReferenceException. Однако в коде, который у вас есть, вы не используете поле, а вместо этого присваиваете полю:

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

Если вы инициализируете поле Types при создании объекта, этот экземпляр будет почти немедленно отброшен и заменен на экземпляр, который вы ему присвоили.

Итак, нет, в приведенном вами примере вам технически не нужно инициализировать свойство. Однако , имейте в виду, что, не инициализируя свойство, класс сохраняет предположение, что потребляющий код будет инициализировать его. В этом одном примере это предположение подтверждается. Но как насчет будущих примеров? Будет ли это предположение всегда подтверждаться в будущем? Вы можете это гарантировать?

Как правило, хорошая идея для инициализации свойств коллекции. Это не требуется , и не делает очень незначительным улучшением производительности, потому что вы не создаете экземпляр объекта, просто чтобы сразу выбросить его и заменить. Но есть риск, что ваш потребляющий код должен всегда не забывать выполнять эту инициализацию.

...