C#:检查变量类型的代价很高

时间:2010-01-13 15:48:25

标签: c#

在C#中检查变量的类型有多贵?

E.g。使用try / catch与使用as与使用typeof对比。

无需进行绝对测量。 :)

3 个答案:

答案 0 :(得分:5)

try / catch肯定更慢,因为抛出的异常会导致收集堆栈信息。

as / is用于与编译时已知的类型进行比较并满足继承(即"string" is Object返回true

typeof / GetType()可用于运行时已知但不满足继承的类型(即。"string".GetType() == typeof(Object)返回false

无论如何,我认为您可能需要as(或is如果您不需要演员值)

答案 1 :(得分:2)

昂贵的完全无关紧要;你应该从不使用异常处理作为控制流的一种形式,如果你可以避免它。它被称为“异常处理”,因为它只应发生在特殊的,不可避免的情况下。无效的类型转换例外是错误,应该修复。 始终使用“is”,“as”或“GetType()”来确定事物的类型。

答案 2 :(得分:1)

如果您只想检查该类型,则应使用is运算符。