gpt4 book ai didi

c# - 我应该使用动态关键字来优化转化吗?

转载 作者:行者123 更新时间:2023-11-30 19:15:25 24 4
gpt4 key购买 nike

我有简单的类层次结构(基类 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com