Compartilhar via


Design de propriedade indexada

Propriedades indexadas permitem o acesso de array semelhante a grupos de itens (por exemplo, os caracteres em uma seqüência de caracteres ou os bits em um BitArray). Propriedades indexadas, chamado indexadores ou propriedades padrão, diferem dos propriedades regulares, eles usam parâmetros que indica qual elemento do agrupar de acesso. A implementação de uma propriedade índice deve ser mais simples possível porque sistema autônomo indexadores são freqüentemente usados em loops. As diretrizes a seguir ajudam a garantir que seus tipos contêm índices bem projetados onde for apropriado.

Considere a possibilidade de usar indexadores para fornecer acesso a dados armazenados em uma matriz interna.

Considere fornecer indexadores em tipos que representam coleções de itens.

Evite propriedades indexadas com mais de um parâmetro.

Se um indexador requer vários parâmetros, reavalie se a propriedade realmente representa o acesso a uma coleção lógica. Caso contrário, em vez disso, use métodos e escolha um nome de método que começa com Get ou Set.

Evite os indexadores com tipos de parâmetro diferente de sistema.Int32, sistema.Int64, sistema.String, sistema.objeto, enumerações ou parâmetros de tipo genérico.

Se o Design requer outros tipos de parâmetros, é altamente deve reavaliar se realmente o membro representa acesso a uma coleção lógica. Caso contrário, em vez disso, use métodos e escolha um nome de método que começa com Get ou Set.

Usar o nome de item para propriedades indexadas, a menos que haja um nome obviamente melhor (por exemplo, consulte a propriedade sistema.String.chars(sistema.Int32)).

The IndexerNameAttribute atributo pode ser usado para personalizar o nome de um indexador.

Não fornecem um indexador e métodos que são semanticamente equivalentes.

No exemplo de código a seguir, o indexador deve ser alterado para um método.

<System.Runtime.CompilerServices.IndexerNameAttribute("PositionsHeld")> _
    Public Property Item (skillId as Integer) as JobInfoCollection


...


Public Function GetPositions(skillId as Integer, _
    minJobLevel as Integer) _
   as JobInfoCollection
[System.Runtime.CompilerServices.IndexerNameAttribute("PositionsHeld")]
    public JobInfoCollection this [int skillId]


...


public JobInfoCollection GetPositions(int skillId, int minJobLevel)

Não oferecem mais de uma família de indexadores de sobrecarga em um tipo.

Alguns compiladores, sistema autônomo o compilador translation from VPE for Csharp, impõem essa diretriz.

Alguns idiomas não oferece suporte para vários conjuntos de indexadores. Se usá-los, alguns desenvolvedores não poderão acessar esses membros.

Não use propriedades indexadas não-padrão.

Alguns compiladores, sistema autônomo o compilador translation from VPE for Csharp, impõem essa diretriz. Não há suporte para propriedades indexadas não padrão em todas as linguagens de programação. Se usá-los, alguns desenvolvedores não poderão acessar esses membros.

Partes direitos autorais 2005 Microsoft Corporation. Todos os direitos reservados.

Partes direitos autorais Addison-Wesley Corporation. Todos os direitos reservados.

Para obter mais informações sobre diretrizes de design, consulte a "diretrizes de design do estrutura: Catálogo de convenções, idiomas e padrões para bibliotecas do .NET reutilizável"Krzysztof Cwalina e Brad Abrams, publicado pela Addison-Wesley, 2005.

Consulte também

Conceitos

Propriedade design

Outros recursos

Diretrizes de design de membro

Diretrizes de Design para desenvolvimento bibliotecas de classe