Classes e estruturas (guia de programação do C#)
Classes e estruturas são duas construções básicas do sistema de tipo comum no .NET Framework.Cada uma é essencialmente uma estrutura de dados que encapsula um conjunto de dados e comportamentos que pertencem juntos como uma unidade lógica.Os dados e os comportamentos são o membros da classe ou struct, e eles incluem seus métodos, propriedades e eventos e assim por diante, conforme listados neste tópico.
Uma declaração de classe ou estrutura é como um desenho que é usado para criar instâncias ou objetos em tempo 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 a memória.Quando a referência de objeto é atribuída a uma nova variável, a novo variável se refere ao objeto original.As alterações feitas através de uma variável são refletidas na outra variável pois ambos se referem aos mesmos dados.
Uma struct é um tipo de valor.Quando uma struct é criada, a variável aos quais a struct é atribuída contém dados reais da struct.Quando a struct é atribuída a uma nova variável, ela é copiada.A nova variável e a variável original, portanto, contém duas cópias separadas dos mesmos dados.Alterações feitas em uma não afetam a outra.
Em geral, as classes são usadas para modelar o comportamento mais complexo ou dados que se destinam a ser modificados depois que um objeto de classe é criado.As estruturas são mais apropriadas para estruturas de dados pequeno que contêm principalmente os dados que não se destina a serem modificados depois que a estrutura é criada.
Para obter mais informações, consulte Classes (guia de programação do C#), Objetos (guia de programação do C#) e Structs (guia de programação do C#).
Exemplo
No exemplo a seguir, MyCustomClass é definida com três membros no nível superior da ProgrammingGuide espaço para nome.Uma instância (objeto) de MyCustomClass é criado na 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 processo é conhecido como o primeiro pilar ou o princípio da programação orientada a objeto.De acordo com para o princípio de encapsulamento, class ou struct pode especificar como acessível que cada um de seus membros é código fora da classe ou struct.Métodos e variáveis que não se destinam a ser usado em fora da classe ou assembly podem ser oculto para limitar o potencial de erros ou mal-intencionado explorações de codificação.
Para obter mais informações sobre classes, consulte Classes (guia de programação do C#) e Objetos (guia de programação do C#).
Membros
Todas as constantes, métodos, campos, propriedades e eventos que devem ser declarados dentro de um tipo; Estes são chamados de membros da classe ou struct.Em C#, não há variáveis globais ou métodos como em outras linguagens.Até mesmo ponto de entrada de um programa, o 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 como código do cliente.Outros métodos e propriedades podem ser somente para uso na classe ou struct propriamente dito.É importante limitar o acesso do seu código para que somente o código do cliente pretendido pode atingi-lo.Você especifica como acessível seus tipos e seus membros são para o 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 do C#).
Herança
Classes (mas não structs) suporta o conceito de herança.Uma classe que deriva de outra classe (o classe base) contém automaticamente todos os membros public, protected e internos da classe base, exceto seus construtores e destrutores.Para obter mais informações, consulte Herança (guia de programação do C#) e Polimorfismo (guia de programação do C#).
Classes podem ser declarados como abstrata, que significa que um ou mais dos seus métodos não possuem implementação.Embora as classes abstratas não podem ser instanciadas diretamente, elas podem servir como classes base para outras classes que fornecem a implementação ausente.Classes também podem ser declarados como lacrado para impedir que outras classes de herdar a partir deles.Para obter mais informações, consulte Classes abstratas e seladas e membros de classe (guia de programação do C#).
Interfaces
Classes e structs pode herdar várias interfaces.Para herdar de uma interface significa que o tipo implementa todos os métodos definidos na interface.Para obter mais informações, consulte Interfaces (guia de programação do 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 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 conterá a lista.Para obter mais informações, consulte Genéricos (guia de programação do C#).
Tipos estáticos
Classes (mas não structs) podem ser declarados como estático.Uma classe estática pode conter apenas membros estáticos e não pode ser instanciada com a nova palavra-chave.Uma cópia da classe é carregada na memória quando o programa for carregado, e seus membros são acessados através do nome de classe.As classes e estruturas podem conter membros estáticos.Para obter mais informações, consulte Classes estáticas e membros da classe estática (guia de programação do C#).
Tipos aninhados
Class ou struct pode ser aninhado em outro class ou struct.Para obter mais informações, consulte Tipos aninhados.
Tipos parciais
Você pode definir a 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 parciais e métodos.
Inicializadores de Objeto
Você pode instanciar e inicializar a classe ou struct objetos e coleções de objetos, sem chamar explicitamente o seu construtor.Para obter mais informações, consulte Objeto e coleção inicializadores (guia de programação do C#).
Tipos Anônimos
Em situações onde ele não é conveniente ou necessárias para criar uma classe nomeada, quando você estiver preenchendo uma lista com dados estruturas que por exemplo que você não tem persistir ou passar para outro método, você usa tipos anônimos.Para obter mais informações, consulte Tipos anônimos (guia de programação do C#).
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 como se eles pertenciam ao tipo original.Para obter mais informações, consulte Métodos de extensão (guia de programação do C#).
Variaveis Locais Implicitamente Tipadas
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 compilação.Para obter mais informações, consulte Variáveis de locais digitadas implicitamente (C# Guia de programação).
Especificação da linguagem C#
Para obter mais informações, consulte Especificação de linguagem do C# A especificação da linguagem é a fonte definitiva para a sintaxe e o uso da linguagem C#.