Ostatnio zacząłem używać c # przechodząc z Javy. Nie mogę znaleźć sposobu na uzyskanie elementu listy według indeksu. W java, aby uzyskać pierwszą pozycję na liście, byłoby:
list1.get(0);
Jaki jest odpowiednik w c #?
Ostatnio zacząłem używać c # przechodząc z Javy. Nie mogę znaleźć sposobu na uzyskanie elementu listy według indeksu. W java, aby uzyskać pierwszą pozycję na liście, byłoby:
list1.get(0);
Jaki jest odpowiednik w c #?
Odpowiedzi:
list1[0];
Zakładając, że typ listy ma zdefiniowany indeksator.
Na liście można użyć metody rozszerzenia ElementAt.
Na przykład:
// Get the first item from the list
using System.Linq;
var myList = new List<string>{ "Yes", "No", "Maybe"};
var firstItem = myList.ElementAt(0);
// Do something with firstItem
using System.Linq;
.
myList[0]
notacją?
.ElementAtOrDefault();
myCollectionWhichMightBeNull?.ElementAt(0)
Lub w celu zabezpieczenia nieistniejącego elementu:myCollection.ElementAtOrDefault(0)?.SomeProperty
Visual Basic, C # i C ++ mają składnię umożliwiającą dostęp do właściwości Item bez używania jej nazwy. Zamiast tego zmienna zawierająca List jest używana tak, jakby była tablicą.
List[index]
Zobacz na przykład: https://msdn.microsoft.com/en-us/library/0ebtbkkc(v=vs.110).aspx
Stare pytanie, ale widzę, że ten wątek był dość niedawno aktywny, więc pójdę dalej i wrzucę moje dwa centy:
Prawie dokładnie to, co powiedział Mitch. Zakładając prawidłowe indeksowanie, możesz po prostu użyć zapisu w nawiasach kwadratowych, tak jakbyś miał dostęp do tablicy. Oprócz korzystania z indeksu numerycznego, jeśli jednak członkowie mają określone nazwy, często można wykonać rodzaj jednoczesnego wyszukiwania / dostępu, wpisując coś w stylu:
var temp = list1["DesiredMember"];
Im więcej wiesz, prawda?
List
Struktura danych .NET Array
to „zmienna powłoka”.
Możesz więc użyć indeksów do uzyskania dostępu do takich elementów, jak:
var firstElement = myList[0];
var secondElement = myList[1];
Począwszy od C # 8.0 możesz używać Index
i Range
klas do uzyskiwania dostępu do elementów. Zapewniają dostęp od końca sekwencji lub po prostu dostęp do określonej części sekwencji:
var lastElement = myList[^1]; // Using Index
var fiveElements = myList[2..7]; // Using Range, note that 7 is exclusive
Możesz łączyć indeksy i zakresy razem:
var elementsFromThirdToEnd = myList[2..^0]; // Index and Range together
Możesz także użyć ElementAt
metody LINQ , ale w 99% przypadków tak naprawdę nie jest to konieczne, a jedynie rozwiązanie o niskiej wydajności.