Visão geral das propriedades
Um componente deve definir propriedades em vez de campos públicos, porque os designers visuais como o Visual Studio exibem propriedades, mas não os campos, no navegador de propriedade.(Outras razões de peso definir propriedades listadas no final de este tópico).
As propriedades são como campos inteligentes.Uma propriedade tem um membro de dados confidenciais acompanhado de funções de acessadores e é acessada geralmente sintaticamente como um campo de uma classe.(Embora as propriedades podem ter diferentes níveis de acesso, a discussão aqui enfoca mais exemplos comuns de acesso público.) Como as propriedades foram disponíveis em várias edições do Visual Basic, os programadores Visual Basic podem querer pular este tópico.
Uma definição de propriedade geralmente consiste em duas partes:
Definição de um membro de dados confidenciais.
private int number = 0;
Private number As Integer = 0
Definição de uma propriedade pública usando a sintaxe da declaração de propriedade.Essa sintaxe associa o membro de dados confidenciais com uma propriedade pública com get e funções de acesso de set .
public int MyNumber { // Retrieves the number data member. get { return number; } // Assigns to the number data member. set { number = value; } }
Public Property MyNumber As Integer ' Retrieves number. Get Return number End Get ' Assigns to number. Set number = value End Set End Property
O termo value é uma palavra-chave na sintaxe para a definição da propriedade.value variável é atribuído à propriedade no código de chamada.O tipo de value deve ser o mesmo que o tipo declarado da propriedade que é atribuída.
Quando uma definição de propriedade incluir normalmente um membro de dados confidenciais, isso não é necessária.O assessor de get pode retornar um valor sem acessar um membro de dados confidenciais.Um exemplo é uma propriedade cujo método de get retorna a hora do sistema.As propriedades permitem que os dados de esconder, o ocultar métodos acessadores da implementação da propriedade.
Há algumas diferenças em sintaxe de propriedade entre linguagens de programação diferentes.Por exemplo, a propriedade do termo não é uma palavra-chave em C#, mas é uma palavra-chave em Visual Basic.Para informações específicas do idioma, consulte a documentação para esta linguagem,
O exemplo a seguir define uma propriedade chamada MyNumber na classe SimpleProperty e acessa MyNumber da classe UsesSimpleProperty.
public class SimpleProperty
{
private int number = 0;
public int MyNumber
{
// Retrieves the data member number.
get
{
return number;
}
// Assigns to the data member number.
set
{
number = value;
}
}
// Other members.
}
public class UsesSimpleProperty
{
public static void Main()
{
SimpleProperty example = new SimpleProperty();
// Sets the property.
example.MyNumber = 5;
// Gets the property.
int anumber = example.MyNumber;
}
}
Public Class SimpleProperty
Private number As Integer = 0
Public Property MyNumber As Integer
' Retrieves number.
Get
Return number
End Get
' Assigns to number.
Set
number = value
End Set
End Property
' Other members...
End Class
Public Class UsesSimpleProperty
Public Shared Sub Main()
Dim example As New SimpleProperty()
' Sets the property.
example.MyNumber = 5
' Gets the property.
Dim anumber As Integer = example.MyNumber
End Sub
End Class
Os métodos de get e de set são geralmente idênticos de outros métodos.Podem executar qualquer lógica do programa, exceções throw, são substituídos, e declarados com os quaisquer modificadores permitidas pela linguagem de programação.Observe, entretanto, que as propriedades podem também ser estáticos.Se uma propriedade é estático, há limitações em que os métodos de get e de set podem fazer.Consulte a referência de linguagem de programação para obter detalhes.
O tipo de uma propriedade pode ser um tipo primitivo, uma coleção de tipos primitivos, um tipo definido pelo usuário, ou uma coleção de tipos definidos pelo usuário.Para todos os tipos primitivos, o.NET Framework fornece conversores de tipo que implementam conversões de cadeia de caracteres-à- valor.Para obter detalhes, consulte conversão de tipos generalizada.Quando um conversor de tipo está disponível para uma propriedade, pode ser exibida no navegador da propriedade no designer.Se você definir propriedades personalizadas e deseja que o navegador de propriedade para exibir o, você deve implementar conversores de tipo personalizados.
Quando o tipo de dados de propriedade é uma enumeração, um ambiente de desenvolvimento como Microsoft Visual Studio exibirá a propriedade como uma lista suspensa na janela propriedades.Se o tipo de dados de propriedade é uma classe que tem propriedades, essas propriedades são chamadas subpropriedades da propriedade de definição.Em a janela propriedades no Visual Studio, um usuário pode expandir uma propriedade para exibir suas sub-propriedades.
É importante adicionar atributos para as propriedades de modo que sejam exibidos adequadamente no navegador de propriedade em tempo de design.Para obter detalhes, consulte Atributos de tempo de design para componentes.
Você deve expor propriedades em vez de campos públicos de seus componentes, como as propriedades podem ser versionados, eles permite que os dados, e ocultam os métodos acessadores podem executar lógica adicional.Em geral, devido às otimizações just-in-time, as propriedades são custosas mais do que campos.