У меня есть несколько списков, содержащих данные. Я намерен отображать определенные индексы этих списков с помощью нажатия клавиш. Функциональность одинакова для всех списков ... «нажмите клавишу, получите данные». Я не хочу писать отдельные функции для каждого списка. Вместо этого я хочу просто установить переменную, равную «list1», «list2» и т. Д. А затем вставить эту переменную строку в

List<Sprite> newList = new List<Sprite>(controlVariable);

По сути, я ищу этот шаблон:

//...user input to set value of controlVariable (this functionality is not part of this question, i'm only interested in the variable stuff below)
string controlVariable = "list1";
List<Sprite> newList = new List<Sprite>(controlVariable);

Это позволило бы мне применить весь свой код к любому списку, с которым я пытаюсь работать, без необходимости писать новый код для каждого типа списка. Но проблема, с которой я столкнулся, заключается в том, что controlVariable - это строка, и ее пытаются вставить в параметр, ожидающий другого типа. Я не знаю, как это обойти. Я уверен, что кто-то скажет мне использовать Reflection, но я просмотрел разные примеры в Интернете и не могу понять, как применить это в моем случае. Я новичок в C #. Может кто-нибудь помочь?

1
maximus1127 23 Сен 2018 в 17:14

1 ответ

Лучший ответ

Может быть, List не подходит для вашего случая. Вы пробовали использовать Словари?

Словари позволяют получать объекты на основе заданного ключа. В вашем случае «ключи» - это строки («список1», «список2» и т. Д.), А связанные с ними объекты (также известные как «значения») - это списки объектов Sprite.

// Creating a dictionary and adding a key to it
Dictionary<string, List<Sprite>> dict = new Dictionary<string, List<Sprite>>();
dict["list1"] = new List<Sprite>();
dict["list2"] = new List<Sprite>();

// Retrieving a list of sprites associated to "list1" from the dictionary
List<Sprite> mySprList = dict["list1"];
4
vinicius.ras 23 Сен 2018 в 14:30