C # indexador (indexador)
Indexador (indexador) permite que um objeto como uma matriz pode ser indexado.Quando você define um indexador para a classe, os atos de classe será como umamatriz virtual (Virtual Array) o mesmo.Você pode usar o operador de acesso à matriz ([]) para acessar a instância da classe.
gramática
A indexação dimensional a seguinte sintaxe:
elemento do tipo este [index int] { // Obter acessor get { // Retorna o valor de índice especificado} // Definir acessor definido { // Definir o valor do índice especificado} }
Indexador (indexador) usos
Declaração actua de uma maneira semelhante à propriedade indexador (propriedade). Como a propriedade (propriedade), que você pode usar para definir oconjunto de índices e obteracessador. No entanto, a propriedade é devolvido ou definir um membro de dados específico, e o índice de devoluções ou define a instância do objeto para um valor específico. Em outras palavras, é o de dados exemplo é dividido em partes menores, e cada parte do índice, obter ou definir cada seção.
A definição de um atributo (propriedade) compreende o fornecimento de nomes de propriedades. Quando o índice não está definido com o nome, mas comesta chave, que aponta para a ocorrência de objeto.O exemplo a seguir ilustra esse conceito:
using System; IndexerApplication namespace { IndexedNames classe { private string [] namelist = new string [tamanho]; tamanho int public static = 10; IndexedNames públicos () { for (int i = 0; i <size; i ++) namelist [i] = "NA"; } Cadeia pública esta [index int] { obter { cadeia tmp; if (index> = 0 && índice <= size-1) { tmp = namelist [índice]; } mais { TMP = ""; } retorno (tmp); } conjunto { if (index> = 0 && índice <= size-1) { namelist [índice] = valor; } } } static void Main (string [] args) { nomes IndexedNames = new IndexedNames (); nomes [0] = "Zara"; nomes [1] = "Riz"; nomes [2] = "Nuha"; nomes [3] = "Asif"; nomes [4] = "Davinder"; nomes [5] = "Sunil"; nomes [6] = "Rubic"; for (int i = 0; i <IndexedNames.size; i ++) { Console.WriteLine (nomes [i]); } Console.ReadKey (); } } }
Quando o código acima é compilado e executado, ele produz os seguintes resultados:
Zara Riz Nuha Asif Davinder Sunil Rubic naNaNa
indexador sobrecarregado (indexador)
Indexador (indexador) pode ser sobrecarregado. Quando declaração indexador pode também ser fornecida com uma pluralidade de parâmetros, e cada parâmetro pode ser de diferentes tipos. Não há necessidade de o índice deve ser um número inteiro. C # permite que indexadores podem ser outros tipos, tais como tipo de cadeia.
O exemplo a seguir demonstra indexador sobrecarregado:
using System; IndexerApplication namespace { IndexedNames classe { private string [] namelist = new string [tamanho]; tamanho int public static = 10; IndexedNames públicos () { for (int i = 0; i <size; i ++) { namelist [i] = "NA"; } } Cadeia pública esta [index int] { obter { cadeia tmp; if (index> = 0 && índice <= size-1) { tmp = namelist [índice]; } mais { TMP = ""; } retorno (tmp); } conjunto { if (index> = 0 && índice <= size-1) { namelist [índice] = valor; } } } int público este [nome string] { obter { int index = 0; while (índice <size) { if (namelist [índice] == nome) { índice de retorno; } Índice ++; } índice de retorno; } } static void Main (string [] args) { nomes IndexedNames = new IndexedNames (); nomes [0] = "Zara"; nomes [1] = "Riz"; nomes [2] = "Nuha"; nomes [3] = "Asif"; nomes [4] = "Davinder"; nomes [5] = "Sunil"; nomes [6] = "Rubic"; // Use o primeiro parâmetro com indexador int for (int i = 0; i <IndexedNames.size; i ++) { Console.WriteLine (nomes [i]); } // Use o segundo indexador com um Console.WriteLine parâmetro string (nomes [ "Nuha"]); Console.ReadKey (); } } }
Quando o código acima é compilado e executado, ele produz os seguintes resultados:
Zara Riz Nuha Asif Davinder Sunil Rubic naNaNa 2