我有简单的类层次结构(基类 A、派生类 B:A、派生类 C:A 等)。我有以下代码:
void computation(A base_class)
{
if (base_class is B)
{
//Do some stuff with (base_class as B)
}
if (base_class is C)
{
//Do some stuff with (base_class as C)
}
}
我想起了c#语言的dynamic关键字。据我了解,我可以使用以下代码(以优化额外转化)。
void computation(A base_class)
{
dynamic temp = base_class as B;
if (temp != null)
{
//Do some stuff with temp
}
temp = base_class as C;
if (temp != null)
{
//Do some stuff with (base_class as C)
}
}
哪种变体更适合使用?这些方法的性能如何?
最佳答案
这听起来像是过早的优化,我不喜欢这里的 dynamic
用法。
还要记住 dynamic
会做一些特定的事情,比如(引用自 MSDN):
The dynamic type enables the operations in which it occurs to bypass compile-time type checking. Instead, these operations are resolved at run time.
所以我想绕过编译时类型检查不是你想要的。
我建议改用 var
。恕我直言,它提高了可读性,调试更容易,使用 as
而不是 is
+ casting 也更快一些。
void computation(A base_class)
{
var b = base_class as B;
if (b != null)
{
//Do some stuff with temp
}
var c = base_class as C;
if (c != null)
{
//Do some stuff with (base_class as C)
}
}
关于c# - 我应该使用动态关键字来优化转化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39150122/