Wie erklären dynamisches array in c#
Arbeite ich an silverligth5
(meine bisherige Erfahrung ist, c++)und ich habe ein dynamisches array, dessen Größe entschieden wird, dynamisch.
Bis ich alles statisch und es ist so:
string[] position = new string[20]; //it must be dynamic I don't want to fix it to 20
for (int i = 0; i < pv.Root.Parameter.Count; i++)
{
if (name == pv.Root.Parameter[i].Name)
{
position[i] = name;
}
}
Wie es kann gesehen werden, dass die Art, wie ich die Größe 20
nur und ich will, dass es nur von der gleichen Länge wie pv.Root.Parameter.Count
.
Wie Sie diese erreichen ?
EDIT/das problem, wenn ich versuche, es zu erreichen über die Liste : ich habe ein problem bei dieser Linie :
if (pv.Root.Parameter[loopCount].Name == position[loopCount])
{
rowGrid.Opacity=0.3;
}
Denn sicher wird es nicht funktionieren position[loopCount]
weil position ist eine Liste und kann nicht indiziert werden wie diese. Wie index ?
Irgendeinem Grund Sie nicht mit einer generischen Liste?
Wie schon andere gesagt haben: Umarmen die
Der code
Wie schon andere gesagt haben: Umarmen die
List<T>
. Ein array ist so 70 ' sDer code
pv.Root.Parameter[loopCount].Name == position[loopCount]
sieht zweifelhaft, da position
sollte kürzer sein als pv.Root.Parameter
so position[loopCount]
kann gut werfen IndexOutOfRange
InformationsquelleAutor Sss | 2014-06-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
pass die
pv.Root.Parameter.Count
statt20
als die array-Länge.Oder verwenden Sie eine Liste, wenn Sie nicht wollen, eine Feste Größe.
bitte sehen Sie sich den Bearbeiten.
wer sagt, dass Sie können nicht verwenden Sie den indexer mit der Liste ? hast du auch versuchen?
Die "Anforderungen" -- das gewünschte Ergebnis -- sind klar wie kloßbrühe. Was ist der Zweck der
position
array/Liste? Hat dieposition
array/Liste müssen die gleiche Länge haben wiepv.Root.Parameter
? Wenn dem so ist (position
müssen dieselbe Länge einpv.Root.Parameter
), und auf der Basis der ersten code-snippet ein array/Liste der Länge/Anzahl pv.Root.Parameter.Count, mit 0 - pv.Root.Parameter.Anzahl der nicht-null-Einträge. Dann, in den bearbeiteten code:if(position[loopCount] != null && pv.Root.Parameter[loopCount].Name == position[loopCount]) { ... }
Sorry, wenn die Aussage wäre so etwas wie:
if( !String.IsNullOrEmpty(position[loopCount]) && pv.Root.Parameter[loopCount].Name == position[loopCount]) { ... }
InformationsquelleAutor Selman Genç
Werden Sie wahrscheinlich wollen, eine "unendliche" array.
Verwenden Sie eine
List
anstelle eines Arrays.In Ihrem Fall:
Benötigen oder wenn Sie ein array von n Elementen verwenden:
plasesee Bearbeiten.
Wie ich schon schrieb in den Kommentar, Sie brauchen nur zu ersetzen, position[index] mit position.ElementAt(index)
'System.Sammlungen.Generisches.Liste<string> "enthält keine definition für "ElementAt" und keine Erweiterung Methode "ElementAt" die Akzeptanz der ein erstes argument vom Typ 'System.Sammlungen.Generisches.Liste<string>' gefunden werden konnte (fehlt eine using-Direktive oder ein Assemblyverweis?) .ICH BIN MIT SILVERLIGHT
Haben Sie den import von System.Collections und System.Sammlungen.Generisches?
InformationsquelleAutor Marco Speziali
Können Sie versuchen, mit Linq:
Oder wenn Sie wollen
List<T>
und nicht arrayInformationsquelleAutor Dmitry Bychenko