if (numerator is int) { ... }
или
if (numerator.GetType() == typeof(int)) {...}
Бывший обычно лучше.
EDIT:
Вы говорите, что проблема в разборе чисел из строкового представления. Боюсь, лучший подход здесь - это вызвать type.TryParse
и проверить, может ли данная строка быть проанализирована как число данного типа.
1010 * Е.Г. *
var tokens = line.Split('/');
double dArg1,dArg2; int iArg1, iArg2;
if (int.TryParse(tokens[0], out iArg1)
&& int.TryParse(tokens[1], out iArg2)){
return iArg1/iArg2;
} else if (double.TryParse(tokens[0], out dArg1)
&& double.TryParse(tokens[1], out dArg2)){
return dArg1/dArg2;
} else { /* handle error */ }
Обратите внимание, что все int
могут быть проанализированы как double
с, поэтому вам нужно попытаться проанализировать токен как int
, прежде чем пытаться проанализировать его как `double.