Resumo : neste tutorial, você aprenderá sobre o campo estático e a propriedade estática do C#.
Introdução ao campo estático C#
Um campo estático está vinculado a uma classe , não a uma instância da classe. Para declarar um campo estático, você usa a static
palavra-chave. Considere o seguinte exemplo.
Primeiro, defina a Person
classe:
// Person.cs
class Person
{
public string Name;
public Person(string name)
{
Name = name;
}
}
Linguagem de código: PHP ( php )
Na Person
classe, Name
é um campo de instância vinculado a uma instância da Person
classe.
Isso significa que cada instância da Person
classe possui seu próprio Name
campo com um valor separado.
Segundo, crie duas instâncias da Person
classe:
// Program.cs
var p1 = new Person("John");
var p2 = new Person("Jane");
Console.WriteLine($"p1 Name: {p1.Name}");
Console.WriteLine($"p2 Name: {p2.Name}");
Linguagem de código: JavaScript ( javascript )
Nesta imagem, p1
e p2
são referências que se referem a Person
objetos separados com seus próprios nomes, campos e valores.
Terceiro, adicione um campo estático Count
à Person
classe e inicialize seu valor como zero:
// Person.cs
class Person
{
public string Name;
public static int Count = 0;
public Person(string name)
{
Name = name;
}
}
Linguagem de código: PHP ( php )
Ao contrário de um campo de instância, o compilador cria um local de memória separado para armazenar um campo estático assim que encontrar a Person
classe:
Para acessar o campo estático Count
dentro da Person
classe, você faz referência direta ao campo:
Count
Como o campo estático Count
está vinculado à classe Person, e não a uma instância da classe, você não pode usar a this
palavra-chave para referenciá-lo. A seguinte instrução resultará em um erro:
this.Count
Linguagem de código: JavaScript ( javascript )
Quarto, aumente o valor do campo estático Count
em um no construtor :
// Person.cs
class Person
{
public string Name;
public static int Count = 0;
public Person(string name)
{
Name = name;
Count++;
}
}
Linguagem de código: PHP ( php )
Quinto, acesse um campo estático fora da classe usando a ClassName.StaticField
sintaxe:
// Program.cs
Console.WriteLine(Person.Count); // 0
Linguagem de código: JavaScript ( javascript )
Finalmente, crie duas instâncias da Person
classe. Cada instrução chama implicitamente o Person
construtor que aumenta o valor do Count
campo estático em um:
// Program.cs
Console.WriteLine($"Person count: {Person.Count}"); // 0
var p1 = new Person("John");
var p2 = new Person("Jane");
Console.WriteLine($"Person count: {Person.Count}"); // 2
Linguagem de código: JavaScript ( javascript )
Propriedade estática C#
Como um campo estático, uma propriedade estática está vinculada a uma classe, e não a qualquer instância da classe. O exemplo a seguir redefine a Person
classe com uma propriedade estática Count
:
class Person
{
public string Name;
public static int Count { get; private set; }
public Person(string name)
{
Name = name;
Count++;
}
}
Linguagem de código: PHP ( php )
Neste exemplo, a Count
propriedade possui um get
acessador público e um set
acessador privado. Isso significa que você pode alterar a Count
propriedade dentro da classe e acessá-la tanto dentro quanto fora da classe.
Resumo
- Use a
static
palavra-chave para definir um campo ou propriedade estática em uma classe. - Um campo ou propriedade estática está vinculado a uma classe, não a uma instância específica da classe.