Как хэдз-ап, я изучаю C# в данный момент и просматриваю учебник, когда я сталкивался с этим препятствием.ElementAt (index) on ICollection <T>
Как вы узнали о ElementAt
из IEnumerable<T>
? Второй комментарий в this Вопрос о нем упоминается, но я просто получаю сообщение об ошибке.
Here они упоминают об этом, но они не говорят вам , как!
В случае, я что-то основное не хватает, вот мой код:
using System.Collections.Generic;
class Card {}
class Deck
{
public ICollection<Card> Cards { get; private set; }
public Card this[int index]
{
get { return Cards.ElementAt(index); }
}
}
Я прибегал к этому из информации, которую я получил на MSDN Library page:
class Deck
{
public ICollection<Card> Cards { get; private set; }
public Card this[int index]
{
get {
return System.Linq.Enumerable.ElementAt<Card>(Cards, index);
}
}
}
Все это происходит из раздела о коллекциях и о том, как вторая реализация кода, которую я показал, облегчает захват определенного элемента из списка, а не необходимость перебирать через счетчик.
Deck deck = new Deck();
Card card = deck[0];
Вместо:
Deck deck = new Deck();
Card c1 = null;
foreach (Card card in deck.Cards){
if (condition for the index)
c1 = card;
}
Могу ли я делать это правильно, или я что-то отсутствует? Спасибо за любой вклад!
Какая ошибка вы получаете? –
вы не можете, внутренний механизм всегда использует некоторый 'Enumerator', и вы не можете перейти прямо к элементу и извлечь его. Конечно, когда вы вызываете 'ToList' или какой-то подобный метод, вы на самом деле перебираете его как только –
ошибка, которую я получаю, заключается в том, что она не может найти определение – qdev76