Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las propiedades indizadas permiten el acceso como matrices a los grupos de elementos (por ejemplo, los caracteres de una cadena o los bits de una BitArray). Las propiedades indizadas, denominadas indizadores o propiedades predeterminadas, se diferencian de las propiedades normales en que toman parámetros que indican a qué elemento el grupo se debe tener acceso. La implementación de una propiedad de índice debería ser lo más sencillo posible porque los indizadores se utilizan frecuentemente en los bucles. Las instrucciones siguientes ayudan a garantizar que sus tipos contienen índices bien diseñados cuando corresponde.
Considere la utilización de indizadores para proporcionar acceso a los datos almacenados en una matriz interna.
Considere la posibilidad de proporcionar indizadores en los tipos que representan colecciones de elementos.
Evite usar propiedades indizadas con más que un parámetro.
Si un indizador requiere varios parámetros, vuelva a valorar si la propiedad representa realmente el acceso a una colección lógica. Si no es así, utilice métodos en su lugar y considere la elección un nombre de método que comience con Get o Set.
Evite los indizadores con tipos de parámetro distintos de System.Int32, System.Int64, System.String, System.Object, enumeraciones o parámetros de tipo genérico.
Si el diseño requiere otros tipos de parámetros, debería volver a valorar estrictamente si el miembro realmente representa el acceso a una colección lógica. Si no es así, utilice métodos en su lugar y considere la elección un nombre de método que comience con Get o Set.
Utilice el elemento de nombre para las propiedades indizadas a menos que haya nombre obviamente mejor (por ejemplo, vea la propiedad System.String.Chars (System.Int32)).
El atributo IndexerNameAttribute se puede utilizar para personalizar el nombre de un indizador.
No proporcione tanto un indizador como métodos que son semánticamente equivalentes.
En el ejemplo de código siguiente, el indizador se debería cambiar a un 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)
No proporcione más de una familia de indizadores sobrecargados en un tipo.
Algunos compiladores, como el compilador de C#, obligan al cumplimiento de esta instrucción.
Algunos lenguajes no admiten el uso de varios conjuntos de indizadores. Si los utiliza, algunos desarrolladores no podrán tener acceso a estos miembros.
No utilice propiedades indizadas no predeterminadas.
Algunos compiladores, como el compilador de C#, obligan al cumplimiento de esta instrucción. Las propiedades indizadas no predeterminadas no se admiten en todos los lenguajes de programación. Si las utiliza, algunos desarrolladores no podrán tener acceso a estos miembros.
Portions Copyright 2005 Microsoft Corporation. Reservados todos los derechos.
Portions Copyright Addison-Wesley Corporation. Reservados todos los derechos.
Para obtener más información sobre las directrices de diseño, consulte “las instrucciones de diseño de Framework: Convenciones, frases realizadas y modelos para libro de bibliotecas reutilizables de .NET” de Krzysztof Cwalina y Brad Abrams, publicados por Addison-Wesley, 2005.
Vea también
Conceptos
Otros recursos
Instrucciones de diseño de miembros
Instrucciones de diseño para desarrollar bibliotecas de clases