Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 22710|Resposta: 0

[Fonte] A diferença entre struct e class em C#

[Copiar link]
Publicado em 24/06/2016 11:53:06 | | |
A diferença mais essencial entre class e struct é que class é um tipo de referência, enquanto struct é um tipo de valor, e sua alocação na memória é diferente.

O que é classe?

Classe, um conceito fundamental na programação orientada a objetos, é um tipo de estrutura de dados personalizada que normalmente contém campos, atributos, métodos, atributos, construtores, indexadores, operadores, etc. No .NET, todas as classes herdam da classe System.Object, então são um tipo de referência, ou seja, quando você nova uma instância de uma classe, o endereço dessa instância no heap gerenciado é armazenado na pilha, e o valor da instância é armazenado no heap gerenciado.

O que é um struct?

Uma estrutura é um tipo de valor usado para organizar um conjunto de variáveis relacionadas em uma única entidade variável. Todas as estruturas são herdadas da classe System.ValueType, então são um tipo de valor, ou seja, a instância struct é criada na pilha onde a thread é atribuída e armazena o valor por si só. Então, ao usar struct, podemos tratá-lo como uma classe de tipo básica, como int e char.



1. classe é o tipo de referência, e structs é o tipo de valor

Como class é um tipo de referência, class pode ser definida como nula. Mas não podemos tornar struct nulo porque é um tipo de valor.




2. Quando você instancia uma classe, ela será criada no heap. E você instancia um struct, que será criado na pilha

3. Você está usando uma referência a uma instância de classe. E você não está usando uma referência a uma struct. (em vez disso, use-os diretamente)

4. Quando passamos classe como argumento para um método, passamos uma referência. Struct passa um valor, não uma referência.

5. Structs não podem ter inicializadores, classes podem ter inicializadores.





6. Classes podem ter construtores sem parâmetro óbvios, mas Structs não podem





7. A nova palavra-chave deve ser instanciada antes que a classe seja usada, e a Struct não precisa dela




8. A classe suporta herança e polimorfismo, Struct não. Nota: Mas o Struct pode implementar interfaces assim como classes

9. Como o Struct não suporta herança, seus membros não podem ser modificados com Internal protegido ou protegido

10. O construtor de Class não precisa inicializar todos os campos, e o construtor de Struct deve inicializar todos os campos







11. Classe pode definir um destruidor, mas Struct não pode

12. A classe é adequada para dados grandes e complexos, e o Struct é adequado para novos tipos que são frequentemente usados como uma combinação de alguns dados.



Ocasiões Aplicáveis: Struct tem vantagens de desempenho, e Class tem vantagens de extensão orientada a objetos.

O tipo usado para o armazenamento de dados subjacente é projetado como um tipo Struct, e o tipo usado para definir o comportamento da aplicação é projetado como uma Classe. Se você não tem certeza sobre a aplicação futura desse tipo, deve usar o Class.




Anterior:Alipay RSA para geração de chave privada e chave pública com um clique
Próximo:C# reverta uma classe de ajuda do MySQL, salve-a
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com