Я пишу класс, представляющий светодиод. В основном 3 uint
значения для r, g и b в диапазоне от 0 до 255.
Я новичок в С# и начал с uint 1 который больше 8 бит, который я хочу. Прежде чем писать свой собственный метод Clamp, я искал один онлайн-сайт и нашел этот замечательный ответ, предлагающий метод расширения. Проблема заключается в том, что он не может вывести тип uint
. Почему это? Этот код имеет uint, написанный во всем этом. Я должен явно указать тип, чтобы он работал.
class Led
{
private uint _r = 0, _g = 0, _b = 0;
public uint R
{
get
{
return _r;
}
set
{
_r = value.Clamp(0, 255); // nope
_r = value.Clamp<uint>(0, 255); // works
}
}
}
// /info/89561/where-can-i-find-the-clamp-function-in-net/581581#581581
static class Clamp
{
public static T Clamp<T>(this T val, T min, T max) where T : IComparable<T>
{
if (val.CompareTo(min) < 0) return min;
else if (val.CompareTo(max) > 0) return max;
else return val;
}
}
1 ошибка, используя byte
- это путь, конечно. Но меня все еще интересует ответ на вопрос.