Array-Eigenschaft syntax in C#
Ich habe eine eine Klasse, die ein integer-array-Eigenschaft und ich versuche, herauszufinden, die richtige syntax dafür. Das int-array instanziiert in der Klassen-Konstruktor.
class DemoClass
{
private int[] myNumbers;
public int[] MyNumbers
{
get { /* Some logic */ }
set { /* Some logic */ }
}
public DemoClass(int elements)
{
//Here, the array should get instantiated using the elements.
}
}
Wie funktioniert die get - /set-block-syntax arbeiten, wenn ich will, dass mein client-code, um eine Nummer aus dem array über die Eigenschaft MyNumbers
? Wie kann ich senden Sie es der richtige index? Was muss ich initialisieren?
- Sind Sie versuchen, erstellen Sie eine indexer Eigenschaft, durch Zufall?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie auf der Suche nach:
Als für den normalen Eigenschaften, die nichts tun, außer zu veröffentlichen, ein eigenes Feld (wie Sie scheinen zu wollen):
int[]
System.Array` zum Beispiel. Ohne auto-Eigenschaften, die Sie gerade tunint[] nums; public int[] Nums { get { return nums;} set { nums = value } }
. Wohlgemerkt, wenn Sie wollen, um die get/set-die einzelnen Elemente des Arrays, die Sie benötigen, um eine index-Eigenschaft.CA1819: Eigenschaften sollten keine Rückgabe-arrays
http://msdn.microsoft.com/en-us/library/0fss9skc.aspx
Arrays zurückgegebenen Eigenschaften sind nicht schreib-geschützt, selbst wenn die Eigenschaft schreibgeschützt ist. Zum halten der array-tamper-proof, die Eigentum zurückgeben muss eine Kopie des Arrays. In der Regel werden die Benutzer nicht verstehen, die negativen Auswirkungen auf die Leistung der Aufruf eine solche Eigenschaft. Speziell, Sie könnte verwenden Sie die Eigenschaft als eine indizierte Eigenschaft.
Fix ein Verstoß gegen diese Regel, entweder machen Sie die Eigenschaft, eine Methode oder die Eigenschaft ändern, um wieder eine collection anstelle eines Arrays
Wenn die Anzahl der Elemente im array behoben ist, würde ich nur einen getter für das array, und lassen Sie die setter. Sie können immer noch Werte zuweisen auf einzelne Elemente im array, aber das wird verhindern, dass jemand austauschen, die das gesamte array unter Euch (oder die Einstellung
null
. Der code würde wie folgt Aussehen:Wenn die Anzahl der Elemente nicht fixiert sind, dann sollten Sie eine
List<int>
eher als ein array, und dann Sie definitiv möchten eine Immobilie keine setter.Heißt es Automatisch Implementierte Eigenschaften . Wenn Sie also eine syntax wie die
C# - compiler automatisch für Sie erstellen Feld sichern. Dieses feature wurde eingeführt, die in C# 3.0 und vor, dass Sie schon immer umsetzen Eigenschaft mit Feld sichern.
Lesen Sie mehr unter: Neue C# "Orcas" Sprache Features: Automatische Eigenschaften, objektinitialisierer, und auflistungsinitialisierer