Você está na página 1de 4

22/09/2019 Campos – Guia de Programação em C# | Microsoft Docs

Campos (Guia de Programação


em C#)
19/07/2015 • 3 minutos para ler •
Neste artigo
Especificação da Linguagem C#
Consulte também

Um campo é uma variável de qualquer tipo que é declarada diretamente em uma classe
ou struct. Os campos são membros do tipo que os contém.

Uma classe ou um struct podem ter campos de instância, campos estáticos ou ambos.
Os campos de instância são específicos a uma instância de um tipo. Se você tem uma
classe 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 no outro 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 na instância A serão imediatamente visíveis
para as instâncias B e C se elas acessarem o campo.

Em geral, você só deve usar campos para variáveis que têm acessibilidade particular ou
protegida. Os dados que a classe expõe para o código de cliente devem ser fornecidos
por meio de métodos, propriedades e indexadores. Usando esses constructos para
acesso indireto aos campos internos, você pode proteger contra valores de entrada
inválidos. Um campo particular que armazena os dados expostos por uma propriedade
pública é chamado de repositório de backup ou de campo de suporte.

Os campos normalmente armazenam os dados que devem estar acessíveis a mais de


um método de classe e devem ser armazenados por mais tempo 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 inteiros: um para o mês, um para o dia e outro para
o ano. As variáveis que não são usadas fora do escopo de um método único devem ser
declaradas como variáveis locais dentro do próprio corpo do método.

Os campos são declarados no bloco de classe, especificando o nível de acesso do


campo, seguido pelo tipo do campo e pelo nome do campo. Por exemplo:

C# = Copiar

public class CalendarEntry


{

https://docs.microsoft.com/pt-br/dotnet/csharp/programming-guide/classes-and-structs/fields 1/4
22/09/2019 Campos – Guia de Programação em C# | Microsoft Docs

// 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
{
// Set some reasonable boundaries for likely birth dates.
if (value.Year > 1900 && value.Year <= DateTime.Today.Year)
{
date = value;
}
else
throw new ArgumentOutOfRangeException();
}

// Public method also exposes date field safely.


// Example call: birthday.SetDate("1975, 6, 30");
public void SetDate(string dateString)
{
DateTime dt = Convert.ToDateTime(dateString);

// Set some reasonable boundaries for likely birth dates.


if (dt.Year > 1900 && dt.Year <= DateTime.Today.Year)
{
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();

}
}

https://docs.microsoft.com/pt-br/dotnet/csharp/programming-guide/classes-and-structs/fields 2/4
22/09/2019 Campos – Guia de Programação em C# | Microsoft Docs

Para acessar um campo em um objeto, adicione um ponto após o nome do objeto,


seguido pelo nome do campo, como em objectname.fieldname . Por exemplo:

C# = Copiar

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 campo day ao "Monday" , por
exemplo, você poderia declarar day como no exemplo a seguir:

C# = Copiar

public class CalendarDateWithInitialization


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

Os campos são inicializados imediatamente antes do construtor para a instância do


objeto ser chamado. Se o construtor atribuir o valor de um campo, ele substituirá
qualquer valor fornecido durante a declaração do campo. Para obter mais informações,
veja Usando construtores.

7 Observação

Um inicializador de campo não pode fazer referência a outros campos de instância.

Os campos podem ser marcados como public, private, protected, internal, protected
internal ou private protected. Esses modificadores de acesso definem como os usuários
da classe podem acessar os campos. Para obter mais informações, consulte
Modificadores de Acesso.

Opcionalmente, um campo pode ser declarado static. Isso torna o campo disponível
para chamadores a qualquer momento, mesmo se não existir nenhuma instância da
classe. Para obter mais informações, consulte Classes estáticas e membros de classes
estáticas.

Um campo pode ser declarado readonly. Um valor só pode ser atribuído a um campo
somente leitura durante a inicialização ou em um construtor. Um campo static
readonly é muito semelhante a uma constante, exceto que o compilador C# não tem

https://docs.microsoft.com/pt-br/dotnet/csharp/programming-guide/classes-and-structs/fields 3/4
22/09/2019 Campos – Guia de Programação em C# | Microsoft Docs

acesso ao valor de um campo somente leitura estático em tempo de compilação, mas


somente em tempo de execução. Para obter mais informações, consulte Constantes.

Especificação da Linguagem C#
Para obter mais informações, consulte a Especificação da linguagem C#. A especificação
da linguagem é a fonte definitiva para a sintaxe e o uso de C#.

Consulte também
Guia de Programação em C#
Classes e Structs
Usando construtores
Herança
Modificadores de acesso
Classes e membros de classes abstract e sealed

Esta página é útil?

 Sim  Não

https://docs.microsoft.com/pt-br/dotnet/csharp/programming-guide/classes-and-structs/fields 4/4

Você também pode gostar