Учтите, я хочу предоставить список, доступный только для чтения.
public class Animal
{
public string Name { get; set; }
}
public class Zoo
{
private List _animals = new List ();
public ReadOnlyCollection Animals => _animals.AsReadOnly();
public void AddAnimal(Animal animal)
{
_animals.Add(animal);
}
}
Однако я могу получить доступ к этому списку только для чтения только с помощью индексатора int
Zoo z = new Zoo();
z.AddAnimal(new Animal() { Name = "Lion"});
var animal = z.Animals[0];
Как создать собственный индексатор по строке (т. е. выполнить поиск по имени животного)?
Я предпочитаю не использовать словарь.
var animal = z.Animals["Lion"];
Я попробовал создать собственный список, но не могу привести его к ReadOnlyCollection:
public class Animals : List
{
public Animal this[string name]
{
get
{
return (Animal)this.Where(x => x.Name == name);
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... ollectiont
Как реализовать собственный индексатор для ReadOnlyCollection ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение