Как насчет этого. Я думаю, что это должно занять меньше операций (по крайней мере, меньше сравнений):
return (value == (Int32)value);
Также помните, что если оператор if
просто возвращает логическое значение, вы можете просто вернуть сравнение. Одно это может сделать это быстрее (если компилятор уже не оптимизирует для этого). Если вам нужно использовать оператор if, вы можете сделать это следующим образом:
if (value == (Int32)value)
{
//Do stuff...
return true;
}
else
{
//Do stuff...
return false;
}
РЕДАКТИРОВАТЬ: Я понимаю, что это на самом деле не работает. Я думал, что приведение Int32 просто скопирует первые 32 бита из десятичного числа, оставляя после себя оставшиеся биты (и не выбрасывая исключение), но, увы, это не сработало (не говоря уже о том, что это будет неправильно все отрицательные значения).