Добрый денёчек. Вопрос по организации памяти и как это вообще правильней делать. Итак, есть некая структура данных
public struct myStruct
{
public myEnum id;
public string field1;
public string field2;
public List<string> fields3;
}
Не суть важно, что там за поля и опустил конструктор. Этих структур ограниченное количество и доступ к ним нужен из всего приложения. По сути это некий справочник, который для быстроты мы храним не в БД, а прям в коде. Есть два способа организации, первый, это обернуть доступ к таким структурам в функцию с ветвлением switch
public static myStruct Get(myEnum id)
{
switch (id)
{
case myEnum.First: return new myStruct(. . . );
case myEnum.Second: return new myStruct(. . . );
default: return null;
}
}
//вызываем так
var result = Get(myEnum.first);
И второй вариант, хранить в словаре
public static class pogreb
{
public static Dictionary<myEnum, myStruct> spravochnik;
public static void fillSpravochnik()
{
var res = new Dictionary<myEnum, myStruct>();
res.Add( myEnum.first, new myStruct(. . .) );
res.Add( myEnum.second, new myStruct(. . .) );
spravochnik = res;
}
}
//Ну и вызывать, соответственно
if(pogreb.spravochnik == null) pogreb.fillSpravochnik();
var result = pogreb.ContainsKey(myEnum.first) ? pogreb[myEnum.first] : null;
То есть в первом случае мы при каждом вызове создаем структуру и отдаем её результатом, а во втором случае мы создаем структуры один раз и все результаты храним в справочнике. Какой подход использовать? Плюсы и минусы? Правильно ли это и есть ли еще какой-нибудь подход?