了解c#中什么类型是动态变量
本文关键字:动态 变量 类型 什么 了解 | 更新日期: 2023-09-27 18:04:55
如何测试动态变量是否为双精度?
我需要这样做:
void someMethod(dynamic var1)
{
if(var1.isDouble)
{...
}else if(var1 is int)
// do something else....
}
这种方法很好(即var1 is double
),尽管这通常不是dynamic
要完成的。更常见的是,当你做知道类型将是什么时,你应该dynamic
,但是很难或不可能在编译时显示(例如COM互操作场景,MVC中的ViewBag
等),如果你想传递未知类型的变量,你可以只使用object
。否则,运行时将在执行期间为您进行类型分析,如果这不是您需要的,这可能会对性能造成很大影响。
在一般情况下,可能会有场景,你想使用dynamic
作为一个捕获所有的容器,但这似乎不是其中之一。在这种情况下,为什么不使用多个方法重载,每个方法都采用所需的类型:
void someMethod(double d) { ... }
void someMethod(int i) { ... }
此场景与dlev解释的dynamic
关键字无关。
你的意思是:
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
}
}
无论哪种方式,除非绝对需要,否则这通常是一个不好的做法。
你想要完成什么?
不应该这样做:
if(var1 is Double)
您可以使用is
关键字:
if (var1 is double)