У меня есть функция, которая принимает два параметра и возвращает истину, если они равны, или ложь, если они не равны:
private bool isequal(object a, object b)
{
if (a != null)
return a.Equals(b);
if (b != null)
return b.Equals(a);
//if (a == null && b == null)
return true;
}
Теперь я хочу расширить эту функцию. Он также должен вернуть истину, если a и b - 2 равных числа, но разного типа.
Например:
int a = 15;
double b = 15;
if (isequal(a,b)) //should be true; right now it's false
{ //...
}
Я уже нашел аналогичный вопрос (с ответом) лучший способ для сравнения double и int, но a и b могут быть числами любого типа или чем-то еще, кроме чисел. Как я могу проверить, являются ли a и b числами вообще? Я надеюсь, что есть способ лучше, чем проверка всех существующих числовых типов .net (Int32, Int16, Int64, UInt32, Double, Decimal, ...)
// обновление: мне удалось написать метод, который работает очень хорошо. Однако могут возникнуть проблемы с числами типа decimal (еще не тестировал). Но он работает для любого другого числового типа (включая большое количество Int64 или UInt64). Если кому-то интересно: код для равенства номеров