Ho appena visto questo in un progetto C#:sintassi “Strano” C# proprietà
public char this[int index]
mi considero di nuovo da C#; qualcuno può aiutare cosa significa?
Ho appena visto questo in un progetto C#:sintassi “Strano” C# proprietà
public char this[int index]
mi considero di nuovo da C#; qualcuno può aiutare cosa significa?
È un indicizzatore.
Gli indicizzatori consentono di indicizzare le istanze di una classe o di una struttura, come gli array . Gli indicizzatori assomigliano alle proprietà eccetto che i loro accessor richiedono i parametri . Un indicizzatore fornisce una sintassi simile a una matrice. Consente a un tipo di accedere a allo stesso modo di un array. Proprietà come gli indicizzatori spesso accedono a un backing store . Accettiamo spesso un parametro di tipo int e accediamo a un backing store di tipo array.
leggerlo da http://www.dotnetperls.com/indexer
string s = "hello";
Console.WriteLine (s[0]); // 'h'
Console.WriteLine (s[3]); // 'l'
Implementazione di un indicizzatore
Per scrivere un indicizzatore, definire una proprietà chiamata tale, specificando gli argomenti in piazza parentesi. Per esempio:
class Sentence
{
string[] words = "The quick brown fox".Split();
public string this [int wordNum] // indexer
{
get { return words [wordNum]; }
set { words [wordNum] = value; }
}
}
Ecco come potremmo utilizzare questo indicizzatore:
Sentence s = new Sentence();
Console.WriteLine (s[3]); // fox
s[3] = "kangaroo";
Console.WriteLine (s[3]); // kangaroo
Uno stesso tipo può dichiarare più indicizzatori, ognuno con parametri di tipo diverso. Un indicizzatore può anche prendere più di un parametro:
public string this [int arg1, string arg2]
{
get { ... } set { ... }
}
indicizzatori compilare internamente per metodi chiamati get_Item
e set_Item
, come segue:
public string get_Item (int wordNum) {...}
public void set_Item (int wordNum, string value) {...}
Il compilatore sceglie il nome Item
di default-si può effettivamente cambia questo decorando il tuo indicizzatore con il seguente attributo:
[System.Runtime.CompilerServices.IndexerName ("Blah")]
questo è chiamato indexer
.
che è chiamato un indicizzatore . Maggiori informazioni su di loro at MSDN.
"Mi considero nuovo in C# chiunque può aiutare cosa significa in C++" Aspetta, cosa? – BoltClock
@BoltClock Una persona C++ ha visto questo in C#? – Shark
@Shark: È quello che ho pensato anche io - ma solo dopo un doppio take. – BoltClock