2016-02-02 2 views
1

Возможно ли на C# создать список и называть его переменной или аналогичной?Создать список с именем из переменной C#

Скажем, у меня есть список с 10 строк в нем:

а, б, в, г, д, е, ж, з, I, J

Могу ли я сделать 10 списков из этого списка, каждый из которых имеет имя, подобное одной из строк?

Что-то вроде

List<string> myList = new List<string>(); 
foreach (var line in myList) 
{ 
    List<string> line = new List<string>(); 
} 

То, что я хочу сделать несколько списков для хранения данных, но я не знаю названия, прежде чем программа работает таким образом она должна генерировать те динамически.

+3

Я не знаю, если это возможно, в C#, но, как правило, это плохая практика. Как вы собираетесь найти имя переменной позже? Обычно вы храните его в многомерном массиве или карте. –

+5

Имена переменных должны быть определены во время компиляции, они не могут быть сгенерированы во время выполнения. Вероятно, вам нужна другая структура данных, например 'Dictionary >', где вы можете указать имя как ключ, чтобы найти список –

+0

@ AndyKorneyev, ведь переменные _can_ генерируются во время выполнения, но это тема разного обсуждения :) – bashis

ответ

4

Похоже, вы хотите Dictionary из List<string> S:

Dictionary<string, List<string>> dict = new Dictionary<string, List<string>>(); 

foreach (var line in myList) 
{ 
    dict.Add(line, new List<string>()); 
} 

Теперь вы можете получить доступ к каждому списку на основе исходной строки мы использовали для ключа:

List<string> aList = dict["a"]; 
3

Вы могли бы попробовать что-то вроде этого:

var newList = new Dictionary<string, List<string>>(); 
foreach (var line in myList) 
{ 
    newList.Add(line, new List<string>()); 
} 

Это даст вам структуры данных, в которых для хранения новых данных и позволит вам ссылаться на них на основе имен в первом списке.

1

кажется, что вы хотите a Dictionary<String, List<String>> примерно:

var data = myList 
    .ToDictionary(line => line, line => new List<string>()); 

И так Вы можете

проверить, если "переменные" существует

if (data.ContainsKey("z")) {...} 

адреса "переменными"

data["a"].Add("some value"); 

добавить "переменным"

data.Add("z", new List<string>()); 
Смежные вопросы