"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Os métodos devem retornar coleções nulas ou vazias?

Os métodos devem retornar coleções nulas ou vazias?

Publicado em 2025-01-26
Navegar:814

Should Methods Return Null or Empty Collections?

Retornando uma coleção nula ou vazia: práticas recomendadas

Ao projetar um método que retorna uma coleção como tipo de valor de retorno, surge uma pergunta: ele deve retornar nulo ou uma coleção vazia? As melhores práticas recomendam fortemente o retorno de uma coleção vazia em todos os casos.

Por que escolher uma coleção vazia?

Retornar nulo é uma prática ruim porque leva à complexidade desnecessária do código e possíveis erros de tempo de execução. Por exemplo, se você retornar nulo para uma propriedade de coleção:

if(myInstance.CollectionProperty != null)
{
  foreach(var item in myInstance.CollectionProperty)
    /* 如果 CollectionProperty 为 null,此代码可能会失败 */
}

Este código pode causar uma exceção se myInstance.CollectionProperty for realmente nulo. Em vez disso, é melhor retornar uma coleção vazia, garantindo que o código acima ainda possa ser executado sem erros.

Práticas recomendadas de atributos

Para propriedades que retornam uma coleção, é recomendado inicializar a propriedade apenas uma vez. Isso pode ser feito durante o construtor da classe que contém a propriedade:

public List Foos { public get; private set; }

public Bar() { Foos = new List(); }

Com C# 6, uma versão mais concisa está disponível:

public List Foos { get; } = new List();

Práticas recomendadas de método

Para métodos que retornam uma coleção, se a coleção real não existir, uma coleção vazia será retornada. Você pode usar o método Enumerable.Empty() para esta finalidade:

public IEnumerable GetMyFoos()
{
  return InnerGetFoos() ?? Enumerable.Empty();
}

Essa abordagem garante que mesmo que InnerGetFoos() retorne nulo, o método ainda retorne uma coleção vazia, evitando possíveis erros.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3