J'ai récemment commencé à utiliser c # en passant de Java. Je n'arrive pas à trouver comment obtenir un élément de liste par index. En java pour obtenir le premier élément de la liste ce serait:
La seule réponse qui explique pourquoi il est possible d'accéder à une liste, qui est un objet, comme un tableau
PrashanD
Renvoie-t-il une copie de l'objet dans la liste? obj = list [0]; list.clear (); // sera obj toujours rempli?
Paul McCarthy
1
@Paul McCarthy: vous pouvez facilement le tester vous-même, mais oui. Une liste contient des références à des objets. La suppression de la liste n'affecte pas les objets qu'elle contient. S'il n'y a pas d'autres références à ces objets, ils seront récupérés à un moment donné.
Mitch Wheat
242
Vous pouvez utiliser la méthode d'extension ElementAt dans la liste.
Par exemple:
// Get the first item from the list
using System.Linq;var myList =newList<string>{"Yes","No","Maybe"};var firstItem = myList.ElementAt(0);// Do something with firstItem
@AnalogWeapon oui, il existe - vous pouvez l'utiliser dans le cadre d'une chaîne de sécurité nulle, par exemple myCollectionWhichMightBeNull?.ElementAt(0)ou pour protéger contre un élément inexistant:myCollection.ElementAtOrDefault(0)?.SomeProperty
Chris Peacock
27
Visual Basic, C # et C ++ ont tous une syntaxe pour accéder à la propriété Item sans utiliser son nom. Au lieu de cela, la variable contenant la liste est utilisée comme s'il s'agissait d'un tableau.
Vieille question, mais je vois que ce fil était assez récemment actif, alors je vais continuer et jeter mes deux cents:
À peu près exactement ce que Mitch a dit. En supposant une indexation correcte, vous pouvez simplement continuer et utiliser la notation entre crochets comme si vous accédiez à un tableau. En plus d'utiliser l'index numérique, cependant, si vos membres ont des noms spécifiques, vous pouvez souvent faire une sorte de recherche / accès simultanés en tapant quelque chose comme:
La Liststructure de données .NET est Arraydans un "shell mutable".
Vous pouvez donc utiliser des index pour accéder à ses éléments comme:
var firstElement = myList[0];var secondElement = myList[1];
À partir de C # 8.0, vous pouvez utiliser des classes Indexet Rangepour accéder aux éléments. Ils permettent d'accéder à la fin de la séquence ou d'accéder simplement à une partie spécifique de la séquence:
var lastElement = myList[^1];// Using Indexvar fiveElements = myList[2..7];// Using Range, note that 7 is exclusive
Vous pouvez combiner des index et des plages ensemble:
var elementsFromThirdToEnd = myList[2..^0];// Index and Range together
Vous pouvez également utiliser la ElementAtméthode LINQ mais pour 99% des cas, ce n'est vraiment pas nécessaire et juste une solution de performance lente.
Réponses:
En supposant que le type de liste possède un indexeur défini.
la source
Vous pouvez utiliser la méthode d'extension ElementAt dans la liste.
Par exemple:
la source
using System.Linq;
.myList[0]
notation standard ?.ElementAtOrDefault();
myCollectionWhichMightBeNull?.ElementAt(0)
ou pour protéger contre un élément inexistant:myCollection.ElementAtOrDefault(0)?.SomeProperty
Visual Basic, C # et C ++ ont tous une syntaxe pour accéder à la propriété Item sans utiliser son nom. Au lieu de cela, la variable contenant la liste est utilisée comme s'il s'agissait d'un tableau.
Voir par exemple: https://msdn.microsoft.com/en-us/library/0ebtbkkc(v=vs.110).aspx
la source
Vieille question, mais je vois que ce fil était assez récemment actif, alors je vais continuer et jeter mes deux cents:
À peu près exactement ce que Mitch a dit. En supposant une indexation correcte, vous pouvez simplement continuer et utiliser la notation entre crochets comme si vous accédiez à un tableau. En plus d'utiliser l'index numérique, cependant, si vos membres ont des noms spécifiques, vous pouvez souvent faire une sorte de recherche / accès simultanés en tapant quelque chose comme:
Plus vous en savez, non?
la source
La
List
structure de données .NET estArray
dans un "shell mutable".Vous pouvez donc utiliser des index pour accéder à ses éléments comme:
À partir de C # 8.0, vous pouvez utiliser des classes
Index
etRange
pour accéder aux éléments. Ils permettent d'accéder à la fin de la séquence ou d'accéder simplement à une partie spécifique de la séquence:Vous pouvez combiner des index et des plages ensemble:
Vous pouvez également utiliser la
ElementAt
méthode LINQ mais pour 99% des cas, ce n'est vraiment pas nécessaire et juste une solution de performance lente.la source
vous pouvez utiliser l'index pour accéder aux éléments de la liste
la source