Мне больше всего нравится небольшой вариант вашего подхода:
public static Dictionary<String, String> ThemeColors
{
get
{
Dictionary<String, String> themeColors = new Dictionary<string, string>();
foreach (String colorAndCode in GetSettingByName("ThemeColors").ToString().Split('|'))
{
var parts = colorAndCode.Split(':');
themeColors.Add(parts[0], parts[1]);
}
return themeColors;
}
}
Единственное отличие состоит в том, что вторая Split()
выполняется только один раз, и прямое индексирование выполняется вместо First()
и Last()
.
Теперь ToDictionary()
замечательно, когда есть смысл включить что-то в более широкий запрос, и я, конечно, не считаю это неправильным, но это не значит, что ваш подход особенно многословен или что-то в этом роде.
Но мне нравится, что вы легко можете изменить подход к переносу дубликатов (используйте dict[parts[0]] = parts[1]
, и он будет перезаписывать дубликаты, а не выбрасывать), но также легко изменить бросок для Black:#00000:#010101
, проверив размер parts
.
В другом направлении, если вам нужно как можно быстрее выполнить синтаксический анализ массивной строки, выбросьте из окна элегантность и замените ее чем-то, что сканирует через токенизацию строки, вместо |
используя Split()
.
Между тем, вышесказанное прекрасно подходит между краткостью и точностью.