Есть ли способ сделать MinValue / MaxValue const вместо readonly?
blockquote>No. Однако BCL тоже этого не делает. Например, DateTime.MinValue -
static readonly
. Ваш текущий подход дляMinValue
иMaxValue
подходит.Что касается ваших двух других вопросов - удобство использования и самого шаблона.
Лично я бы избегал автоматических преобразований (неявные операторы преобразования) для типа «температуры», подобного этому. Температура не является целочисленным значением (на самом деле, если вы были , чтобы сделать это, я бы сказал, что она должна быть плавающей точкой - 93,2 градуса C. Совершенно верно.) Обработка температуры как целого , и особенно нецелесообразно рассматривать любое целочисленное значение, поскольку температура кажется неуместной и потенциальной причиной ошибок.
Я нахожу, что структуры с неявным преобразованием часто вызывают больше проблем удобства использования, чем они адресуют. Принуждение пользователя к записи:
Celsius c = new Celcius(41);
Не намного сложнее, чем неявное преобразование из целого числа. Однако это намного яснее.