Но поведение t.genericChecked < /code> смущает меня, он не бросает Даже когда я ожидал, что это бросится.
Код: Выделить всё
// Example 1: Throws as expected
short a = 32767;
short b = 32767;
short.CreateChecked(a + b); //
// Example 2: Does not throw, even though it overflows
short a = 32767;
short b = 32767;
short result = GenericChecked(a, b);
T GenericChecked(T a, T b) where T : INumber
{
return T.CreateChecked(a + b); // Does not throw, returns -2 instead.
}
< /code>
Даже добавление максимальных значений не бросает < /p>
_ = GenericChecked(a, b);
T GenericChecked(T a, T b) where T : INumber, IMinMaxValue
{
return T.CreateChecked(T.MaxValue + T.MaxValue);
}
Почему это не бросает перепроблема при выполнении той же арифметической операции? Протестировано с .net 9
Подробнее здесь: https://stackoverflow.com/questions/793 ... verflowing
Мобильная версия