比较不同类型的盒装值

Log*_*rfo 4 c# boxing

在C#中,值类型可以装箱,这会导致某些比较问题,特别是针对不同类型.示例:2m == 2Lreturn true,但(object)2m == (object)2L返回false.我的问题是:是否有可能编写一个比较方法来获取两个对象(盒装值)参数并true在示例中返回?它必须适用于任何值类型组合,并且==如果值是未装箱的,则具有与运算符相同的行为.谢谢!

Igo*_*voy 7

我建议dynamic用于那项任务.

object o1 = 2m;
object o2 = 2L;

if ((dynamic)o1 == (dynamic)o2) { Console.WriteLine("Works like charm"); }
Run Code Online (Sandbox Code Playgroud)

但是,我并不完全了解dynamic关键字的所有含义,所以要小心!

  • @Tau:但也许给出了'o1`和`o2`,不能改变 (2认同)