traduccion que property indexadores index example c# .net indexer

c# - que - Clase con indexador y propiedad llamada "Item"



indexer que es (3)

Basado en este sitio , es posible usar un atributo para cambiar el nombre del Indizador

public class MyClass { public object Item { get; set; } [System.Runtime.CompilerServices.IndexerName("MyItem")] public object this[string index] { get { return null; } set { } } }

¿Es posible crear una clase en .NET 4 con:

  1. un indexador,
  2. una propiedad llamada "Item"?

Por ejemplo, esta clase de C # no se compilará para mí:

public class MyClass { public object Item { get; set; } public object this[string index] { get { return null; } set { } } }

El compilador da un error CS0102 :

El tipo ''MyClass'' ya contiene una definición para ''Item''

aunque solo estoy definiendo explícitamente el Item una vez.


C # crea internamente una propiedad llamada Item para los idiomas que no admiten el indexador. Puede controlar este nombre utilizando el IndexerNameAttribute , como este:

[IndexerName("MyIndexer")] public object this[string index] { get { return blah; } }


Si recuerdo correctamente, se puede acceder a dicho indexador desde VB.Net a través de un método "Item ()". Ahí es de donde viene ese "definido dos veces".