Код для теста ниже:

я есть кеш, который я реализую с помощью 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));

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

Я хочу знать, какой подход лучше с точки зрения производительности и ремонтопригодности.

Ответы на вопрос(7)

Ваш ответ на вопрос