Compartilhar via


Campos (guia de programação translation from VPE for Csharp)

A campo é uma variável de qualquer tipo declarado diretamente em um classe or struct.Os campos são membros de seu tipo recipiente.

Uma classe ou estrutura pode ter campos de instância ou campos estático ou ambos.Campos de instância são específicos para uma instância de um tipo.Se você tiver uma classe de T, com um campo de instância F, você pode criar dois objetos do tipo T e modificar o valor de F em cada objeto sem afetar o valor em Outros objeto.Por outro lado, um campo estático pertence à própria classe e é compartilhado entre todas as instâncias dessa classe.As alterações feitas a partir do instância um irá ser visivelmente imediatamente às ocorrências de B e C se eles acesso o campo.

Em geral, você deve usar campos apenas para variáveis que têm acessibilidade particular ou protegida.Dados que sua classe expõe para código do cliente devem ser fornecidos por meio de métodos, Propriedades and indexadores.Usando essas construções para acesso indireto a campos internos, contra os valores de entrada inválidos.Um campo privado que armazena os dados expostos por uma propriedade pública é chamado um repositório de backup or campo existente.

Campos normalmente armazenam os dados que devem ser acessível a mais de um método de classe e devem ser armazenados por mais tempo do que o tempo de vida de qualquer método único.Por exemplo, uma classe que representa uma data do calendário pode ter três campos de número inteiro: uma para o mês, para o dia e outra para o ano.Variáveis que não são usadas fora do escopo de um único método devem ser declarados sistema autônomo variáveis locais dentro do corpo de método propriamente dito.

Campos são declarados no bloco de classe, especificando o nível de acesso do campo, seguido do tipo do campo, seguido do nome do campo.Por exemplo:

public class CalendarEntry
{
    // private field
    private DateTime date;

    // public field (Generally not recommended)
    public string day;

    // Public property exposes date field safely.
    public DateTime Date 
    {
        get 
        {
            return date;
        }
        set 
        {
            if(value.Year > 1980 || value.Year <= 2008)
            {
                date = value;
            }
            else
                throw new ArgumentOutOfRangeException();
        }

    }

    // Public method also exposes date field safely.
    public void SetDate(string dateString)
    {
        DateTime dt = Convert.ToDateTime(dateString);

        if (dt.Year > 1980 || dt.Year <= 2008)
        {
            date = dt;
        }
        else
            throw new ArgumentOutOfRangeException();            
    }

    public TimeSpan GetTimeSpan(string dateString)
    {
        DateTime dt = Convert.ToDateTime(dateString);

        if (dt != null && dt.Ticks < date.Ticks)
        {
            return date - dt;
        }
        else
            throw new ArgumentOutOfRangeException();  

    }
}

Para acessar um campo em um objeto, adicionar um período após o nome do objeto, seguido do nome do campo, sistema autônomo em objectname.fieldname. Por exemplo:

CalendarEntry birthday = new CalendarEntry();
birthday.day = "Saturday";

Um campo pode receber um valor inicial usando o operador de atribuição quando o campo é declarado.Para atribuir automaticamente o day campo para "Monday", por exemplo, você deve declarar day sistema autônomo no exemplo a seguir:

public class CalendarDateWithInitialization
{
    public string day = "Monday";
    //...
}

Campos sejam inicializados imediatamente antes que o construtor para a instância do objeto é chamado.Se o construtor atribui o valor de um campo, ele substituirá qualquer valor atribuído durante a declaração de campo.Para obter mais informações, consulte Usando Construtores (Guia de Programação C#).

Observação:

Um campo inicializador não é possível fazer referência a outros campos de instância.

Campos podem ser marcados sistema autônomo pública, particular, protegido, interno, or protected internal. Esses modificadores de acesso definem como os usuários da classe podem acessar os campos.Para obter mais informações, consulte Modificadores de acesso (guia de programação C#).

Um campo, opcionalmente, pode ser declarado estático.Isso torna o campo disponível para os chamadores a qualquer momento, mesmo que exista nenhuma ocorrência da classe.Para obter mais informações, consulte Classes estáticas e membros de classe estáticos (guia de programação C#).

Um campo pode ser declarado somente leitura.Um campo somente leitura pode ser atribuído apenas um valor durante a inicialização ou em um construtor.A staticreadonly field is very similar to a constant, except that the C# compiler does not have access to the value of a static read-only field at compile time, only at run time.Para obter mais informações, consulte Constantes (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#:

  • 1.6.5 Campos

  • 10.5 Campos

Consulte também

Conceitos

Guia de Programação C#

Referência

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

Usando Construtores (Guia de Programação C#)

Herança (Guia de programação C#)

Modificadores de acesso (guia de programação C#)

Abstrato e Sealed classes e membros de classe (guia de programação C#)