У меня есть структура, которая может быть очень легко представлена с помощью трехуровневого вложенного словаря, например так
private static Dictionary<string, Dictionary<string, Dictionary<string,string>>> PrerenderedTemplates;
Где структура может использоваться примерно так
PrerenderedTemplates[instanceID][templategroup][templatepart]
Теперь я понимаю, что этот код трудно читать, потому что, глядя на определение, вы не можете понять, для чего оно используется. Единственное преимущество, которое я действительно вижу в изменении его на Dictionary
, - это удобочитаемость. Преобразование каждого вложения в отдельный класс (например, class PrerenderedTemplate {} class TemplateGroup {} class TemplatePart {}
) добавило бы намного больше строк кода для небольшого (если таковое имеется) вычислительного преимущества. Насколько я вижу.
Словарь
, в документации / комментариях. Обновление
Итак, вдохновленный Резой, но неспособный использовать кортежи, я решил создать свой собственный генератор ключей и реализовать его шаблон следующим образом:
private Dictionary<string, string> PrerenderedTemplates;
private string GetPrerenderedTemplateKey(string InstanceId, string FeatureId, string OptionId)
{
return new StringBuilder(instanceId)
.Append(FormatTools.LIST_ENTRY_DELIMITER)
.Append(templategroup)
.Append(FormatTools.LIST_ENTRY_DELIMITER)
.Append(templatepart).ToString();
}
Где FormatTools.LIST_ENTRY_DELIMITER
- это Unicode Персонаж для частного использования 0xe04d
.