gpt4 book ai didi

c# - 是否有令人信服的理由反对使用 C# 关键字 "as"?

转载 作者:太空狗 更新时间:2023-10-29 19:48:46 25 4
gpt4 key购买 nike

我发现使用以下内容:

TreeViewItem i = sender as TreeViewItem;
if(i != null){ ... }

比以下更容易编写和理解:

if(sender.GetType() == typeof(TreeViewItem)){
TreeViewItem i = (TreeViewItem)sender;
...
}

是否有令人信服的理由使用第一个结构?

最佳答案

在大多数情况下,我更喜欢强制转换而不是as,因为通常如果对象的类型是错误的,这表明存在错误。错误 应该 导致异常 IMO - 并且恰好在执行转换的行处的 InvalidCastException 比代码后面的 NullReferenceException 清晰得多.

as 应该在传递对您不想要的类型的对象的引用有效且合法时使用。这种情况确实会出现,但根据我的经验,不像正常类型转换那么频繁。

然而,使用 GetType() 比较类型很少是正确的解决方案 - 只有当您想要检查所涉及的确切类型而不是兼容类型时才适用类型。

我写了一个significantly longer answer关于其他地方的“cast vs as”讨论。

关于c# - 是否有令人信服的理由反对使用 C# 关键字 "as"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/569522/

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