类型未知时比较数字类型

时间:2015-01-15 20:18:58

标签: c#

我想要比较两个值:

var value1 = someProperty.GetValue(x);
var value2 = someOtherProperty.GetValue(y);

if (value1 == value2)
{
   // do something
}

其中somePropertysomeOtherPropertyPropertyInfo个对象。换句话说,我通过反思来获取值。

问题是,如果value1最终为int,其值为4,而value2最终为byte,其值为4我希望能够告诉他们是一样的。有没有一种方法来比较两个数值而不考虑它们的类型?最好还是允许比较两个字符串(因此我无法真正地将value2转换为int,因为它可能会导致它{{1} })。

1 个答案:

答案 0 :(得分:8)

一种选择是使用dynamic。这将使编译器发出动态调用站点,并要求DLR在运行时启动比较对象。

object obj1 = (int)4;//Default is int, but added to make intent clear
object obj2 = (byte)4;
Console.WriteLine(obj1 == obj2);
Console.WriteLine((dynamic)obj1 == (dynamic)obj2);

打印

False
True