看看什么类型是动态变量c#

时间:2011-08-08 18:42:00

标签: c# dynamic

如何测试动态变量是否为双倍?

我需要做类似的事情:

void someMethod(dynamic var1)
{
  if(var1.isDouble)
  {...
  }else if(var1 is int)
  // do something else....


}

4 个答案:

答案 0 :(得分:8)

这种方法很好(即var1 is double),尽管这通常不是dynamic要完成的。更常见的情况是,当 知道类型将是什么时,你应dynamic,但在编译时很难或不可能显示(例如COM互操作方案,{{1}在MVC中等等。)如果要传递未知类型的变量,可以使用ViewBag。否则,运行时将在执行期间为您进行类型分析,如果不是您需要的话,这可能是一个很大的性能损失。

通常情况下,您可能希望将object用作全能容器,但这似乎不是其中之一。在这种情况下,为什么不使用多个方法重载,每个方法都采用所需的类型:

dynamic

答案 1 :(得分:3)

此方案与dynamic关键字explained by dlev无关。

你的意思是:

void someMethod(object o)
{
    if (o is double) {
        double d = (double)o;
        // do something with d
    } else if (o is int) {
        int i = (int)o;
        // do something with i
    }
}

无论哪种方式,除非绝对需要,否则这通常是一种不好的做法 你想要完成什么?

答案 2 :(得分:0)

不应该这样做:

if(var1 is Double)

答案 3 :(得分:0)

您可以使用is关键字检查类型是否隐式可转换加倍:

if (var1 is double)