В моем проекте мне нужен «сдвинутый» список. В принципе у меня есть public class dyn_int : List<int>
, чтобы поддержать некоторые из наших старых сценариев (написанных на собственном языке, но «полуавтоматический переведенный» на C#)Оператор индекса переопределения для смещения
На этом языке, списки начали свои индексы с 1, а не с 0!
В настоящее время я пытаюсь создать удобный API, чтобы наши разработчики все еще могли использовать стиль, с которым они знакомы.
Я, однако, застреваю при создании оператора индекса. Вот моя текущая реализация индекса-доступа для списков. Геттер отлично работает, но я не уверен, что делать с заданным методом. Я пока не нашел метод List.SetElementAt(key, value)
.
public class dyn_int : List<int>
{
public int this[int key]
{
get
{
return this.ElementAt(key-1);
}
}
}
'Геттер отлично работает' ... Вы пробовали' dyn_int [0] '? – Jonesopolis
Я бы настоятельно рекомендовал вам использовать композицию, а не наследование здесь (и начать следовать соглашениям об именах .NET). Дайте вашему классу 'List' * variable * вместо того, чтобы выводить из 'List ' и сделать ваш класс реализованным 'IList ' ... хотя даже это будет «интересно» с учетом ожиданий индексатора. –
Вы также не должны использовать 'ElementAt' для получения элементов из списка. Вы повторяете всю последовательность, чтобы получить этот узел. – Servy