Curso de C#: Lição 10: Properties

Esta lição ensina C # Propriedades. Os nossos objectivos são os seguintes: Para compreender o que são propriedades. Implementar uma propriedade. Crie uma propriedade somente para leitura. Criar uma Escreve-Só propriedade.

Por | @oficinadanet Programação
Esta lição ensina C # Propriedades. Os nossos objectivos são os seguintes:

* Para compreender o que são propriedades.
* Implementar uma propriedade.
* Crie uma propriedade somente para leitura.
* Criar uma Escreve-Só propriedade.


Propriedades oferecem a oportunidade de proteger um domínio de uma classe para a leitura e escrita-a através da propriedade. Em outras línguas, esta é freqüentemente realizada por implementar programas especializados getter e setter métodos. C # propriedades permitir este tipo de protecção ao mesmo tempo que lhe permite o acesso a bens como se fosse a uma área. Para obter uma apreciação para conseguir aquilo propriedades, vamos ter um olhar para o modo de fornecer campo encapsulamento por métodos tradicionais.

Listagem 10-1. Um exemplo tradicional de Class Field Access: Accessors.cs
using System;

public class PropertyHolder
{
    private int someProperty = 0;

    public int getSomeProperty()
    {
        return someProperty;
    }

    public void setSomeProperty(int propValue)
    {
        someProperty = propValue;
    }

}

public class PropertyTester
{
    public static int Main(string[] args)
    {
        PropertyHolder propHold = new PropertyHolder();

        propHold.setSomeProperty(5);

        Console.WriteLine("Property Value: {0}", propHold.getSomeProperty());

        return 0;
    }
}


Listando 10-1 mostra o método tradicional de acesso à classe fields.Ele tem dois métodos, getSomeProperty () e setSomeProperty (). The getSomeProperty() method returns the value of the someProperty field. O setSomeProperty () método estabelece o valor da someProperty campo.

O PropertyTester PropertyTester classe utiliza os métodos da classe PropertyHolder para obter o valor do campo someProperty no PropertyHolder classe. O método main () instantiates um novo objeto PropertyHolder, propHold. Próxima someProperty define o campo de propHold para o valor 5, utilizando o método setSomeProperty. Em seguida, o programa imprime o valor de uma propriedade Console.WriteLine () método chamada. O argumento utilizado para obter o valor do imóvel é uma chamada para o getSomeProperty () o método de propHold objeto. Ela imprime out "Propriedade Valor: 5" para o console.

Este método de acesso à informação em um campo tem sido boa, uma vez que apoia o objeto-orientado conceito de encapsulamento. Se a execução do someProperty mudado de um tipo int para um tipo byte, isto ainda funciona. Agora a mesma coisa pode ser conseguida com propriedades muito suave.

Listagem 10-2. Acessnado Class Fields com Properties: Properties.cs
using System;

public class PropertyHolder
{
    private int someProperty = 0;

    public int SomeProperty
    {
        get
       {
            return someProperty;
        }
        set
       {
            someProperty = value;
        }
    }
}

public class PropertyTester
{
    public static int Main(string[] args)
    {
        PropertyHolder propHold = new PropertyHolder();

        propHold.SomeProperty = 5;

        Console.WriteLine("Property Value: {0}", propHold.SomeProperty);

        return 0;
    }
}


Listando 10-2 mostra como criar e utilizar um imóvel. O PropertyHolder classe tem a SomeProperty propriedade implementation.Notice que a primeira letra da primeira palavra é maiúscula.Essa é a única diferença entre os nomes dos bens e SomeProperty o campo someProperty. A propriedade tem dois acessores, obter e definir. A começar accessor retorna o valor do campo someProperty a chamada código. O conjunto accessor estabelece o valor da someProperty campo com o conteúdo de valor, que é o valor a ser atribuído pela chamada código. O valor apresentado no conjunto accessor C # é uma palavra reservada.

A classe PropertyTester usa o SomeProperty propriedade no PropertyHolder classe. A primeira linha do método main () PropertyHolder cria um objeto chamado propHold. Próximo ao valor da someProperty domínio da propHold objeto está definido para 5, utilizando o SomeProperty propriedade. Trata-se de que a simples - basta para atribuir o valor do imóvel como se fosse um campo.

Depois disso, o Console.WriteLine () método imprime o valor do campo someProperty do propHold objeto.Fá-lo através da utilização dos SomeProperty propriedade do propHold objeto. Mais uma vez, é assim tão simples - basta usar o imóvel como se fosse um domínio próprio.

Propriedades podem ser feitas somente para leitura. Isso é realizado por ter apenas um accessor obter o imóvel em execução.

Listagem 10-3. Read-Only Property: ReadOnlyProperty.cs
using System;

public class PropertyHolder
{
    private int someProperty = 0;

    public PropertyHolder(int propVal)
    {
        someProperty = propVal;
    }

    public int SomeProperty
    {
        get
       {
            return someProperty;
        }
    }
}

public class PropertyTester
{
    public static int Main(string[] args)
    {
        PropertyHolder propHold = new PropertyHolder(5);

        Console.WriteLine("Property Value: {0}", propHold.SomeProperty);

        return 0;
    }
}


The PropertyHolder classe SomeProperty tem uma propriedade que só se implementa um accessor. Ela deixa de fora o conjunto accessor. Este particular PropertyHolder classe tem um construtor que aceita um parâmetro int.

O método main () da classe PropertyTester cria um novo objeto PropertyHolder chamado propHold. A instanciação do objeto propHold usa o construtor do PropertyHolder que toma um parâmetro int. In this case, it is set to 5. Neste caso, é definir a 5.This inicializa o someProperty domínio da propHold objeto a 5.

Desde a SomeProperty propriedade da classe PropertyHolder é só de leitura, não há outra maneira de definir o valor do someProperty campo. Se você propHold.SomeProperty = 7 inserido na lista, o programa não compilar, porque SomeProperty é somente para leitura. Quando o SomeProperty propriedade é usada na Console.WriteLine () método, que funciona bem. Isto porque se trata de uma operação que apenas ler invoca a obter accessor do SomeProperty propriedade.

Listing 10-4. Write-Only Property: WriteOnlyProperty.cs
using System;

public class PropertyHolder
{
    private int someProperty = 0;

    public int SomeProperty
    {
        set
       {
            someProperty = value;

            Console.WriteLine("someProperty is equal to {0}", someProperty);
        }
    }
}

public class PropertyTester
{
    public static int Main(string[] args)
    {
        PropertyHolder propHold = new PropertyHolder();

        propHold.SomeProperty = 5;

        return 0;
    }
}


Listando 10-4 mostra como criar e usar um só escrever-propriedade. Desta vez a obter accessor é removido do SomeProperty propriedade do PropertyHolder classe. O conjunto accessor tenha sido adicionado, com um pouco mais lógica. Ela imprime o valor do someProperty campo depois de ter sido modificada.

O método main () do PropertyTester classe instantiates a PropertyTester classe com um construtor padrão. Em seguida, ele usa o SomeProperty propriedade do propHold objeto para definir o campo de someProperty a propHold objeto a 5. Este invoca o conjunto accessor do propHold objeto, que estabelece o valor da sua someProperty campo a 5 e depois imprime "someProperty é igual a 5" para o console.

Resumo


Você já sabe o que são de propriedades e de como eles são utilizados. Das técnicas tradicionais de encapsulamento tenham contado com métodos distintos. Propriedades permitem aceder ao estado objetos como se fosse um campo. Propriedades podem ser feitas somente para leitura ou escrita-e só você sabe a forma de aplicar cada tipo.

Artigo traduzido automaticamente de: http://www.csharp-station.com/Tutorials/Lesson10.aspx

Mais sobre: curso_c_sharp c_sharp
Share Tweet
Recomendado
Comentários
Carregar comentários
Destaquesver tudo