Design de propriedade indexada
Propriedades indexadas permitem o acesso de array semelhante aos grupos de itens (por exemplo, os caracteres em uma seqüência de caracteres ou os bits de um BitArray). Propriedades indexadas, chamado indexadores ou propriedades padrão, são diferentes das propriedades regulares poderem ter parâmetros que indica qual elemento no grupo de acesso. A implementação de uma propriedade de índice deve ser tão simples quanto possível, porque os indexadores são freqüentemente usados em loops. As diretrizes a seguir ajudam a garantir que seus tipos contêm índices bem projetadas, onde for apropriado.
Considere o uso de 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. Se não, use os métodos e considere a possibilidade de escolher um nome de método começa com Get ou Set.
Evite indexadores com tipos de parâmetro diferente, por exemplo, Int32, Int64, System. String, System. Object, enumerações ou parâmetros de tipo genérico.
Se o projeto requer a outros tipos de parâmetros, você deverá reavaliar fortemente se o membro representa realmente o acesso a uma coleção lógica. Se não, use os métodos e considere a possibilidade de escolher um nome de método começa com Get ou Set.
Use o nome do Item para propriedades indexadas, a menos que haja um nome obviamente melhor (por exemplo, consulte a propriedade System.String.Chars(System.Int32)).
O 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)
[System::Runtime::CompilerServices::IndexerNameAttribute("PositionsHeld")]
property JobInfoCollection^ default [int]
...
JobInfoCollection^ GetPositions(int skillId, int minJobLevel)
Não oferecem mais de uma família de indexadores de sobrecarga em um tipo.
Alguns compiladores, como, por exemplo, o compilador C#, impõem essa diretriz.
Alguns idiomas não oferece suporte a vários conjuntos de indexadores. Se você usá-los, alguns desenvolvedores não poderão acessar esses membros.
Não use propriedades indexadas de não-padrão.
Alguns compiladores, como, por exemplo, o compilador C#, impõem essa diretriz. Propriedades indexadas de não-padrão não são suportadas em todas as linguagens de programação. Se você usá-los, alguns desenvolvedores não poderão acessar esses membros.
Portions Copyright 2005 Microsoft Corporation. Todos os direitos reservados.
Portions Copyright Addison-Wesley Corporation. Todos os direitos reservados.
Para obter mais informações sobre as diretrizes de design, consulte a "diretrizes de Design do Framework: Convenções, idiomas e padrões de reutilizável.Bibliotecas de rede" catálogo por Krzysztof Cwalina e Brad Abrams, publicado pela Addison-Wesley, 2005.
Consulte também
Conceitos
Outros recursos
Diretrizes de Design do membro
Diretrizes de Design para desenvolvimento bibliotecas de classe