У меня есть кеш, который я реализую с помощью ConcurrentDictionary, Данные, которые мне нужно сохранить, зависят от 5 параметров. Таким образом, метод, чтобы получить его из кеша: (для простоты я показываю только 3 параметра, и я изменил тип данных для представления CarData для ясности)
public CarData GetCarData(string carModel, string engineType, int year);
Интересно, какой тип ключа лучше использовать в моем ConcurrentDictionary, я могу сделать это вот так:
var carCache = new ConcurrentDictionary<string, CarData>();
// check for car key
bool exists = carCache.ContainsKey(string.Format("{0}_{1}_{2}", carModel, engineType, year);
Или вот так:
var carCache = new ConcurrentDictionary<Tuple<string, string, int>, CarData>();
// check for car key
bool exists = carCache.ContainsKey(new Tuple(carModel, engineType, year));
Я не использую эти параметры в любом другом месте, поэтому нет оснований для создания класса, просто чтобы сохранить их вместе.
Я хочу знать, какой подход лучше с точки зрения производительности и ремонтопригодности.