Propriedade na classe de C# |
 |
 |
Propriedade na classe de C#
|
Como n�s alcan�amos vari�veis do membro de alguma classe fora da classe? Em a maioria das l�nguas including C++, n�s faremos o p�blico das vari�veis do membro de modo que n�s possamos criar um exemplo da classe e diretamente alcan�ar os campos p�blicos, como mostrado abaixo:
|
using System;
class Hello
{
static void Main () {
Console.WriteLine("hello, world");
}
}
|
|
A classe acima tem um campo p�blico: cor. N�s podemos alcan�ar este campo fora da classe como mostrado abaixo:
|
Car car = new Car ();
car. Color = "red";
string color = car.color;
|
|
Mas esta � a maneira velha! Isto trabalho im�vel com C#, mas a aproxima��o sugerida � usar a �propriedade� em vez das vari�veis diretamente de acesso do membro. O seguinte snippet do c�digo mostra como criar a �propriedade� em uma classe.
|
public class Car
{
// private fields.
private string color;
// constructor
public Car()
{
}
public string Color
{
get
{
return color; // return the value from privte field.
}
set
{
color = value; // save value into private field.
}
}
}
|
|
A classe acima tem um campo confidencial - cor. Ent�o n�s temos um �a �cor chamada� da propriedade�, que � usada representar o campo confidencial. Anotar que o campo � confidencial e a propriedade � p�blica. (N�s usamos o mesmo nome com superior/lowercase representar a �propriedade� e o �campo�, mas n�s podemos dar todo o nome que n�s quisermos.)
|
Cada propriedade tem duas por��es:
come�ar
ajustar
|
A pe�a come�ar � executada quando n�s alcan�amos o valor da propriedade como mostrado abaixo:
|
Car car = new Car();
string color = car.Color;
|
|
Quando executados, o acima come�am o accessor retornar�o o valor armazenado no campo �cor�. A pe�a do jogo � executada quando n�s atribu�mos um valor � propriedade como mostrado abaixo:
|
Car car = new Car();
car.Color = "RED";
|
|
Quando executado, o accessor acima do jogo atribuir� o valor �VERMELHO� ao campo confidencial �cor�. (Nota que o �valor� � um keyword, que tenha o valor atribu�do a ele.)
|
Assim, que � a diferen�a?
|
No primeiro olhar, n�o h� nenhuma diferen�a! N�s podemos conseguir o mesmo comportamento escrevendo 2 m�todos diferentes (como SetColor (...), GetColor ()).
|
A primeira vantagem de usar a propriedade �, l�quido de limpeza dos olhares do c�digo do que tendo 2 m�todos separados. N�s podemos simplesmente chamar uma propriedade como se era um campo na classe.
|
Bem, ent�o n�s podemos perguntar porque lhe fazer 2 m�todos, n�s podemos fazer-lhe um campo p�blico, de modo que n�s possamos o alcan�ar criando um exemplo da classe.
|
A vantagem principal excedente usando uma propriedade em vez de um campo p�blico �, com a propriedade, n�s come�ar� uma possibilidade escrever poucas linhas do c�digo (se n�s queremos) nos accessors come�ar e de jogo. Assim, n�s podemos executar algum validation ou toda a outra l�gica antes de retornar algum valor ou de atribui-lo ao campo confidencial. Ver a classe modificada abaixo:
|
public class Car
{
// private fields.
private string color;
// constructor
public Car()
{
}
public string Color
{
get
{
if ( color == "" )
return "GREEN";
else
return color;
}
set
{
if ( value == "" )
thrown new Exception ("Wrong value.");
else
color = value;
}
}
}
|
|
Deixar-nos analisar a pe�a come�ar primeiramente. Aqui n�s estamos verificando se haja um valor v�lido no campo �cor� antes que n�s retornemos o valor. Se estiver vazio, n�s estamos come�ando uma possibilidade retornar um valor de defeito �verde�. Esta maneira, n�s podemos certificar-se de que quem quer que chama a propriedade �cor� come�ar� sempre uma cor v�lida, nunca uma corda vazia.
|
Na pe�a do jogo, n�s estamos fazendo um validation para certificar-se que n�s atribu�mos sempre um valor v�lido a nosso campo. Se algu�m atribuir uma corda vazia � propriedade da �cor�, come�ar� uma exce��o (erro).
|
Car car = new Car();
car.Color = "";
|
|
O c�digo acima jogar� um erro porque n�s estamos tentando atribuir uma corda vazia e o accessor do jogo jogar� um erro se ele uma corda vazia. Esta maneira, n�s podemos certificar-se de que n�s permitimos que somente os valores v�lidos estejam atribu�dos.
|
Assim, eu suponho que agora voc� apreciaria a finalidade da �propriedade�. Assim, n�o mais campos p�blicos! Sempre ter campos confidenciais e escrever propriedades p�blicas como o envolt�rio para eles se requerido para expo os fora da classe.
|
 |
 |
Keywords Property in C# class, c# xml, c# c++, c# net, c# textbox, c# dotnet, vb c#, c# example,
convert c#, c# control, asp c#, private property, c# form, csharp c#, custom c#,
c# application, c# sample, add c#, use c#, properties property, c# data, c# create,
|