Como: Declarar e usar propriedades de leitura/gravar (guia de programação translation from VPE for Csharp)

Propriedades fornecem a conveniência de membros de dados públicos sem os riscos que acompanham o acesso desprotegido, não-controlado e não-verificado dados de um objeto.Isso é conseguido por meio de acessadores: métodos especiais que atribuir e recuperam valores do membro de dados subjacente.The conjunto acessador permite que membros de dados a ser atribuído e o obter acessador recupera valores de membro de dados.

Esse exemplo mostra um Person classe que tem duas propriedades: Name (seqüência de caracteres) e Age (int). Ambas as propriedades fornecem get e set Propriedades de leitura e gravar acessadores, portanto são consideradas.

Exemplo

class Person
{
    private string name = "N/A";
    private int age = 0;

    // Declare a Name property of type string:
    public string Name
    {
        get
        {
            return name;
        }
        set
        {
            name = value;
        }
    }

    // Declare an Age property of type int:
    public int Age
    {
        get
        {
            return age;
        }

        set
        {
            age = value;
        }
    }

    public override string ToString()
    {
        return "Name = " + Name + ", Age = " + Age;
    }
}

class TestPerson
{
    static void Main()
    {
        // Create a new Person object:
        Person person = new Person();

        // Print out the name and the age associated with the person:
        Console.WriteLine("Person details - {0}", person);

        // Set some values on the person object:
        person.Name = "Joe";
        person.Age = 99;
        Console.WriteLine("Person details - {0}", person);

        // Increment the Age property:
        person.Age += 1;
        Console.WriteLine("Person details - {0}", person);

        // Keep the console window open in debug mode.
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }
}
/* Output:
    Person details - Name = N/A, Age = 0
    Person details - Name = Joe, Age = 99
    Person details - Name = Joe, Age = 100
*/

Programação robusta

No exemplo anterior, a Name e Age as propriedades são pública e incluir um get e um set acessador. Isso permite que qualquer objeto ler e gravar essas propriedades.No entanto, às vezes é desejável, excluir um dos acessadores.Omitindo o set acessador, por exemplo, faz a propriedade somente leitura:

public string Name
{
    get
    {
        return name;
    }
}

Como alternativa, você pode expor publicamente um acessador mas verifique outras particular ou protegido.Para obter mais informações, consulte Acessibilidade acesso assimétrico.

Depois que sistema autônomo propriedades são declaradas, eles podem ser usados sistema autônomo se fossem campos da classe.Isso permite uma sintaxe muito natural quando tanto Obtendo e definindo o valor de uma propriedade, sistema autônomo sistema autônomo instruções a seguir:

person.Name = "Joe";
person.Age = 99;

Observe que uma propriedade set método um especial value variável está disponível. Essa variável contém o valor que o usuário especificado, por exemplo:

name = value;

Observe a sintaxe limpa para incrementar o Age propriedade em um Person objeto:

person.Age += 1;

Se separar set e get foram usados métodos de propriedades do modelo, o código equivalente teria esta aparência:

person.SetAge(person.GetAge() + 1); 

The ToString método é substituído neste exemplo:

public override string ToString()
{
    return "Name = " + Name + ", Age = " + Age;
}

Observe que ToString não é explicitamente usado no programa. Ela é chamada por padrão, a WriteLine chamadas.

Consulte também

Conceitos

Guia de Programação C#

Referência

Propriedades (Guia de programação do C#)

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