Compartilhar via


Escolhendo entre estruturas e classes

Classes são tipos de referência e estruturas são tipos de valor. Tipos de referência são alocados na heap e gerenciamento de memória é manipulado pelo coletor de lixo. Tipos de valor são alocados na pilha ou in-line e são desalocados quando eles estiverem fora do escopo. Em geral, os tipos de valor são mais baratos alocar e desalocar. No entanto, se eles são usados em cenários que exigem uma quantidade significativa de conversão boxing e conversão conversão unboxing, eles executar mal em relação aos tipos de referência. Para obter mais informações, consulte Boxing e unboxing (C# Guia de programação).

Para obter informações adicionais sobre os tipos de referência e tipos de valor, consulte o Visão Geral do CTS (Common Type System).

Considere a possibilidade de definir uma estrutura em vez de uma classe se ocorrências do tipo forem pequenas e normalmente curta duração ou comumente incorporadas em outros objetos.

Não defina uma estrutura, a menos que tenha o tipo de todas as seguintes características:

  • Logicamente, ele representa um único valor, semelhante a tipos primitivos (inteiro, duplo e assim por diante).

  • Ele tem um dimensionar de instância menores que 16 bytes.

  • É imutável.

  • Ele não terá que ser in a box com freqüência.

Se um ou mais dessas condições não forem atendidas, crie um tipo de referência em vez de uma estrutura. Falha ao seguir essa diretriz negativamente pode afetar o desempenho.

Partes direitos autorais 2005 Microsoft Corporation. Todos os direitos reservados.

Partes direitos autorais Addison-Wesley Corporation. Todos os direitos reservados.

Para obter mais informações sobre diretrizes de design, consulte a "diretrizes de design do estrutura: Catálogo de convenções, idiomas e padrões para bibliotecas do .NET reutilizável"Krzysztof Cwalina e Brad Abrams, publicado pela Addison-Wesley, 2005.

Consulte também

Outros recursos

Diretrizes de design de tipo

Diretrizes de Design para desenvolvimento bibliotecas de classe