Я недавно начал использовать c #, переходя с Java. Я не могу найти, как получить элемент списка по индексу. В Java, чтобы получить первый элемент списка, это будет:
Единственный ответ, который объясняет, почему можно получить доступ к списку, который является объектом, например массивом
PrashanD
Возвращает ли он копию объекта в списке? obj = list [0]; list.clear (); // будет ли объект еще заполнен?
Пол Маккарти
1
@ Пол МакКарти: вы могли бы легко проверить это сами, но да. Список содержит ссылки на объекты. Очистка списка не влияет на объекты, содержащиеся в нем. Если нет других ссылок на эти объекты, они будут собираться мусором в определенный момент времени.
Mitch Wheat
242
Вы можете использовать метод расширения ElementAt в списке.
Например:
// 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 да, есть - вы можете использовать его как часть нулевой безопасной цепочки, например, myCollectionWhichMightBeNull?.ElementAt(0)или для защиты от несуществующего элемента:myCollection.ElementAtOrDefault(0)?.SomeProperty
Крис Пикок
27
Visual Basic, C # и C ++ имеют синтаксис для доступа к свойству Item без использования его имени. Вместо этого переменная, содержащая список, используется как массив.
Старый вопрос, но я вижу, что эта тема была относительно недавно активна, поэтому я добавлю два моих цента:
В значительной степени именно то, что сказал Митч. При условии правильной индексации вы можете просто использовать обозначения в квадратных скобках, как если бы вы обращались к массиву. Однако, в дополнение к использованию числового индекса, если у ваших участников есть определенные имена, вы часто можете выполнять вид одновременного поиска / доступа, набрав что-то вроде:
ListСтруктура данных .NET находится Arrayв «изменяемой оболочке».
Таким образом, вы можете использовать индексы для доступа к его элементам, таким как:
var firstElement = myList[0];var secondElement = myList[1];
Начиная с C # 8.0 вы можете использовать Indexи Rangeклассы для доступа к элементам. Они обеспечивают доступ с конца последовательности или просто доступ к определенной части последовательности:
var lastElement = myList[^1];// Using Indexvar fiveElements = myList[2..7];// Using Range, note that 7 is exclusive
Вы можете комбинировать индексы и диапазоны вместе:
var elementsFromThirdToEnd = myList[2..^0];// Index and Range together
Также вы можете использовать ElementAtметод LINQ, но в 99% случаев это действительно не нужно, а просто решение с низкой производительностью.
Ответы:
Предполагая, что для типа списка определен индексатор.
источник
Вы можете использовать метод расширения ElementAt в списке.
Например:
источник
using System.Linq;
.myList[0]
обозначениями?.ElementAtOrDefault();
myCollectionWhichMightBeNull?.ElementAt(0)
или для защиты от несуществующего элемента:myCollection.ElementAtOrDefault(0)?.SomeProperty
Visual Basic, C # и C ++ имеют синтаксис для доступа к свойству Item без использования его имени. Вместо этого переменная, содержащая список, используется как массив.
См. Например: https://msdn.microsoft.com/en-us/library/0ebtbkkc(v=vs.110).aspx
источник
Старый вопрос, но я вижу, что эта тема была относительно недавно активна, поэтому я добавлю два моих цента:
В значительной степени именно то, что сказал Митч. При условии правильной индексации вы можете просто использовать обозначения в квадратных скобках, как если бы вы обращались к массиву. Однако, в дополнение к использованию числового индекса, если у ваших участников есть определенные имена, вы часто можете выполнять вид одновременного поиска / доступа, набрав что-то вроде:
Чем больше ты знаешь, верно?
источник
List
Структура данных .NET находитсяArray
в «изменяемой оболочке».Таким образом, вы можете использовать индексы для доступа к его элементам, таким как:
Начиная с C # 8.0 вы можете использовать
Index
иRange
классы для доступа к элементам. Они обеспечивают доступ с конца последовательности или просто доступ к определенной части последовательности:Вы можете комбинировать индексы и диапазоны вместе:
Также вы можете использовать
ElementAt
метод LINQ, но в 99% случаев это действительно не нужно, а просто решение с низкой производительностью.источник
Вы можете использовать индекс для доступа к элементам списка
источник