Compartilhar via


Design de Estruturas

Observação

Esse conteúdo é reimpresso por permissão da Pearson Education, Inc. das Diretrizes de Design da Estrutura: Convenções, Idiomas e Padrões para Bibliotecas .NET Reutilizáveis, 2ª Edição. Essa edição foi publicada em 2008, e desde então o livro foi totalmente revisado na terceira edição. Algumas das informações nesta página podem estar desatualizadas.

O tipo de valor de uso geral é geralmente chamado de struct, sua palavra-chave C#. Esta seção fornece diretrizes para design geral de struct.

❌ NÃO forneça um construtor sem parâmetros para um struct.

Seguir esta diretriz permite que matrizes de structs sejam criadas sem precisar executar o construtor em cada item da matriz. Observe que o C# não permite que structs tenham construtores sem parâmetros.

❌ NÃO defina tipos de valor mutáveis.

Tipos de valor mutáveis têm vários problemas. Por exemplo, quando um getter de propriedade retorna um tipo de valor, o chamador recebe uma cópia. Como a cópia é criada implicitamente, os desenvolvedores podem não estar cientes de que estão modificando a cópia e não o valor original. Além disso, alguns idiomas (idiomas dinâmicos, em particular) têm problemas ao usar tipos de valor mutáveis porque até mesmo variáveis locais, quando desreferenciadas, fazem com que uma cópia seja feita.

✔️ Verifique se um estado em que todos os dados da instância estão definidos como zero, false ou nulo (conforme apropriado) é válido.

Isso impede a criação acidental de instâncias inválidas quando uma matriz dos structs é criada.

✔️ Implemente IEquatable<T> nos tipos de valor.

O método Object.Equals em tipos de valor causa conversão boxing e sua implementação padrão não é muito eficiente, pois usa reflexão. Equals pode ter um desempenho muito melhor e pode ser implementado para que ele não cause conversão boxing.

❌ NÃO estenda explicitamente ValueType. Na verdade, a maioria dos idiomas impede isso.

Em geral, os structs podem ser muito úteis, mas só devem ser usados para valores pequenos, únicos e imutáveis que não serão usados com frequência.

Partes © 2005, 2009 Microsoft Corporation. Todos os direitos reservados.

Reimpresso por permissão da Pearson Education, Inc. de Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition de Krzysztof Cwalina e Brad Abrams, publicado em 22 de outubro de 2008 pela Addison-Wesley Professional como parte da série Microsoft Windows Development Series.

Consulte também