Нещодавно я почав використовувати c # перехід із Java. Здається, я не можу знайти, як отримати елемент списку за індексом. У java, щоб отримати перший пункт списку, було б:
list1.get(0);
Який еквівалент c #?
Нещодавно я почав використовувати c # перехід із Java. Здається, я не можу знайти, як отримати елемент списку за індексом. У java, щоб отримати перший пункт списку, було б:
list1.get(0);
Який еквівалент c #?
Відповіді:
list1[0];
Припустимо, що тип списку визначений індексатором.
Ви можете використовувати метод розширення ElementAt у списку.
Наприклад:
// 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]
позначеннями?
.ElementAtOrDefault();
myCollectionWhichMightBeNull?.ElementAt(0)
або для захисту від неіснуючого елемента:myCollection.ElementAtOrDefault(0)?.SomeProperty
У всіх Visual Basic, C # та C ++ є синтаксис доступу до властивості елемента без використання його імені. Натомість змінна, що містить List, використовується як би масивом.
List[index]
Дивіться, наприклад, https://msdn.microsoft.com/en-us/library/0ebtbkkc(v=vs.110).aspx
Старе питання, але я бачу, що ця тема була нещодавно активною, тому я продовжую і кидаю два центи:
Досить точно те, що сказав Мітч. Якщо припустити правильну індексацію, ви можете просто йти вперед і використовувати позначення квадратних дужок, як якщо б ви отримували доступ до масиву. Окрім використання числового індексу, якщо ваші члени мають конкретні імена, ви можете часто робити одночасний пошук / доступ, ввівши щось на зразок:
var temp = list1["DesiredMember"];
Чим більше ви знаєте, правда?
List
Структура даних .NET - це Array
"змінна оболонка".
Таким чином, ви можете використовувати індекси для доступу до таких елементів, як:
var firstElement = myList[0];
var secondElement = myList[1];
Починаючи з C # 8.0, ви можете використовувати Index
та Range
класи для доступу до елементів. Вони забезпечують доступ з кінця послідовності або просто доступ до певної частини послідовності:
var lastElement = myList[^1]; // Using Index
var fiveElements = myList[2..7]; // Using Range, note that 7 is exclusive
Ви можете комбінувати індекси та діапазони разом:
var elementsFromThirdToEnd = myList[2..^0]; // Index and Range together
Крім того, ви можете використовувати ElementAt
метод LINQ, але для 99% випадків це дійсно не потрібно, і це просто рішення з низькою продуктивністю.