Campo e propriedade estática C#

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 staticpalavra-chave. Considere o seguinte exemplo.

Primeiro, defina a Personclasse:

// Person.cs

class Person
{
    public string Name;

    public Person(string name)
    {
        Name = name;
    }
}Linguagem de código:  PHP  ( php )

Na Personclasse, Nameé um campo de instância vinculado a uma instância da Personclasse.

Isso significa que cada instância da Personclasse possui seu próprio Namecampo com um valor separado.

Segundo, crie duas instâncias da Personclasse:


// 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, p1e p2são referências que se referem a Personobjetos separados com seus próprios nomes, campos e valores.

Terceiro, adicione um campo estático Countà Personclasse 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 Personclasse:

Para acessar o campo estático Countdentro da Personclasse, você faz referência direta ao campo:

Count

Como o campo estático Countestá vinculado à classe Person, e não a uma instância da classe, você não pode usar a thispalavra-chave para referenciá-lo. A seguinte instrução resultará em um erro:

this.CountLinguagem de código:  JavaScript  ( javascript )

Quarto, aumente o valor do campo estático Countem 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.StaticFieldsintaxe:

// Program.cs

Console.WriteLine(Person.Count); // 0Linguagem de código:  JavaScript  ( javascript )

Finalmente, crie duas instâncias da Personclasse. Cada instrução chama implicitamente o Personconstrutor que aumenta o valor do Countcampo 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}"); // 2Linguagem de código:  JavaScript  ( javascript )
Campo estático C#

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 Personclasse 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 Countpropriedade possui um getacessador público e um setacessador privado. Isso significa que você pode alterar a Countpropriedade dentro da classe e acessá-la tanto dentro quanto fora da classe.

Resumo

  • Use a staticpalavra-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.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *