Share via


Classes e estruturas (guia de programação translation from VPE for Csharp)

Classes e estruturas são duas da construção básica de common type sistema do .NET estrutura.Cada um é essencialmente uma estrutura de dados que encapsula um conjunto de dados e sistema autônomo comportamentos que pertencem juntos sistema autônomo uma unidade lógica.sistema autônomo dados e comportamentos são o membros da classe ou struct, e eles incluem seus métodos, propriedades e eventos e assim por diante, conforme listado neste tópico.

Uma classe ou struct declaração é como um plano gráfico usado para criar instâncias ou objetos em time de execução.Se você definir uma classe ou struct chamado Person, Person é o nome do tipo. Se você declarar e inicializar uma variável p do tipo Person, p deve ser um objeto ou ocorrência de Person. Várias instâncias do mesmo Person tipo pode ser criado e cada instância pode ter valores diferentes em suas propriedades e campos.

Uma classe é um tipo de referência.Quando um objeto da classe é criado, a variável à qual o objeto está atribuído contém apenas uma referência para que a memória.Quando a referência de objeto é atribuída a uma nova variável, a nova variável se refere ao objeto original.As alterações feitas por meio de uma variável são refletidas na Outros variável como ambos se referem aos mesmos dados.

A struct é um tipo de valor.Quando uma struct é criada, a variável à qual está atribuída a estrutura contém dados real do struct.Quando o struct é atribuído a uma nova variável, ele é copiado.A nova variável e a variável original, portanto, conter duas cópias separadas dos mesmos dados.Alterações feitas em uma cópia não afetam a Outros cópia.

Em geral, as classes são usadas para modelar o comportamento mais complexo ou dados que se destina a ser modificado após a criação de um objeto de classe.As estruturas são mais adequadas para estruturas de dados pequeno que contêm principalmente os dados que não se destina a ser modificada depois que a estrutura é criada.

Para obter mais informações, consulte Classes (guia de programação C#) , Objetos (guia de programação C#) e Structs (guia de programação C#).

Exemplo

No exemplo a seguir, MyCustomClass é definido com três membros no nível superior da ProgrammingGuide namespace. Uma instância (objeto) MyCustomClass é criado no Main método na Program classe e métodos e propriedades do objeto são acessadas usando a notação de ponto.

namespace ProgrammingGuide
{
    // Class definition.
    public class MyCustomClass
    {
        // Class members:
        // Property.
        public int Number { get; set; }

        // Method.
        public int Multiply(int num)
        {
            return num * Number;
        }

        // Instance Constructor.
        public MyCustomClass()
        {
            Number = 0;
        }
    }
    // Another class definition. This one contains
    // the Main method, the entry point for the program.
    class Program
    {
        static void Main(string[] args)
        {
            // Create an object of type MyCustomClass.
            MyCustomClass myClass = new MyCustomClass();

            // Set the value of a public property.
            myClass.Number = 27;

            // Call a public method.
            int result = myClass.Multiply(4);
        }
    }
}

Encapsulamento

Encapsulamento às vezes é conhecido sistema autônomo o primeiro pilar ou princípio de programação orientada a objeto.De acordo com para o princípio de encapsulamento, class ou struct pode especificar como acessível cada um dos seus membros é código fora da classe ou estrutura.Métodos e variáveis que não se destinam a ser usado de fora da classe ou assembly podem ser oculto para limitar o potencial de erros ou mal-intencionados explorações de codificação.

Para obter mais informações sobre classes, consulte Classes (guia de programação C#)  e Objetos (guia de programação C#). Para obter mais informações sobre como as classes de design, consulte Diretrizes de design de tipo.

Membros

Todas as constantes, métodos, campos, propriedades e eventos devem ser declarados dentro de um tipo; esses são chamados de membros da classe ou struct.Não em translation from VPE for Csharp, existem variáveis global ou métodos que houver na alguns Outros idiomas.Até mesmo do programa de um ponto de entrada, a Main método, deve ser declarado dentro de uma classe ou struct. A lista a seguir inclui todos os vários tipos de membros que podem ser declarados em uma classe ou struct.

Acessibilidade

Alguns métodos e propriedades devem ser chamados ou acessado a partir do código fora de sua classe ou struct, conhecido sistema autônomo código do cliente.Outros métodos e propriedades podem ser somente para uso na classe ou struct propriamente dito.É importante limitar a acessibilidade do seu código para que somente o código do cliente pretendido poderá atingi-lo.Você especificar como acessível seus tipos e seus membros são para código do cliente usando os modificadores de acesso pública , protegido , interno, protected internal, e particular .A acessibilidade padrão é private. Para obter mais informações, consulte Modificadores de acesso (guia de programação C#).

Herança

Classes (mas não estruturas) suportam o conceito de herança.Uma classe que deriva de outra classe (a classe base) contém todos os membros públicos, protected e internos da classe base, exceto seus construtores e destrutores automaticamente.Para obter mais informações, consulte Herança (Guia de programação C#) e Polymorphism (guia de programação C#).

Classes podem ser declarados sistema autônomo Resumo, que significa que um ou mais dos seus métodos não tem nenhuma implementação.Embora sistema autônomo classes abstratas não podem ser instanciadas diretamente, elas podem servir sistema autônomo classes base para Outros classes que fornecem a implementação ausente.Classes também podem ser declarados sistema autônomo selado para impedir que outras classes herde deles.Para obter mais informações, consulte Abstrato e Sealed classes e membros de classe (guia de programação C#).

Interfaces

Classes e estruturas podem herdar várias interfaces.Herdar de um meio de interface que o tipo implementa todos os métodos definidos na interface.Para obter mais informações, consulte Interfaces (guia de programação C#).

Tipos genéricos

Classes e estruturas podem ser definidas com um ou mais parâmetros de tipo.Código do cliente fornece o tipo de quando ele cria uma instância do tipo.Por exemplo O List<T> classe na System.Collections.Generic espaço para nome é definido com um tipo de parâmetro. Código do cliente cria uma instância de um List<string> ou List<int> Para especificar o tipo que a lista conterá. Para obter mais informações, consulte Generics (Guia de programação C#) .

Tipos estático

Classes (mas não estruturas) podem ser declaradas sistema autônomo estático.Uma classe estática pode conter apenas membros estático e não pode ser instanciada com a palavra-chave new.Uma cópia da classe é carregada na memória quando o programa for carregado, e seus membros são acessados por meio do nome de classe.Classes e estruturas podem conter membros estático.Para obter mais informações, consulte Classes estáticas e membros de classe estáticos (guia de programação C#).

Tipos aninhados

classe ou struct podem ser aninhados em outro classe ou struct.Para obter mais informações, consulte Tipos aninhados.

Tipos parcial

Você pode definir parte de uma classe, struct ou método em um arquivo de código e outra parte em um arquivo de código separados.Para obter mais informações, consulte Classes parcial e métodos.

Inicializadores de Objeto

Você pode instanciar e inicializar classe ou struct objetos e coleções de objetos, sem chamar explicitamente seu construtor.Para obter mais informações, consulte Objeto e coleção inicializadores (guia de programação translation from VPE for Csharp).

Tipos anônimos

Em situações em que ele não é conveniente ou necessárias para criar uma classe nomeada, por exemplo quando preencher uma lista com dados estruturas que você não tem persistir ou passar para outro método, você usar tipos anônimo.Para obter mais informações, consulte Tipos anônimo (guia de programação translation from VPE for Csharp).

Métodos de extensão

Você pode "estender" uma classe sem criar uma classe derivada, criando um tipo separado cujos métodos podem ser chamados sistema autônomo se eles pertenciam ao tipo original.Para obter mais informações, consulte Métodos de extensão (guia de programação translation from VPE for Csharp).

Digitados implicitamente variáveis locais

Dentro de um método de classe ou estrutura, você pode usar digitação implícita para instruir o compilador para determinar o tipo correto no momento da compilar.Para obter mais informações, consulte Digitados implicitamente variáveis locais (guia de programação translation from VPE for Csharp).

Especificação da linguagem C#

Para obter mais informações, consulte as seções a seguir no Especificação da linguagem C#:

  • Classes 1.6 e objetos

  • Structs 1,7

  • Classe 3.4.4 membros

  • Tipos de Classe 4.2.1

  • Classes 10

  • Structs 11

Consulte também

Conceitos

Guia de Programação C#

Date

History

Motivo

Julho de 2008

Adicionadas informações e definições do lançamento.

Aprimoramento de informações.

Julho de 2008

Informações adicionadas ao parágrafo sobre acessibilidade.

Aprimoramento de informações.