gpt4 book ai didi

c# - 在 C# 中使用 "as"是一种安全的转换方式吗?

转载 作者:IT王子 更新时间:2023-10-29 04:22:43 27 4
gpt4 key购买 nike

我想知道在以下代码中使用关键字“as”是否是在 C# 中进行强制转换的安全方式(即不会爆炸):

public void abc(ref Object dataSource)
{
DataTable table = dataSource as DataTable;
}

有没有更安全的转换方式?

最佳答案

它不会爆炸......但这并不一定意味着它是安全的。

通常,当我使用强制转换进行引用转换时,这是因为我真的,真的认为执行时类型就是我指定的类型。如果不是,则表示我的代码中存在错误 - 我宁愿将其表现为异常。

如果您的系统中有错误数据,那么就好像一切正​​常一样继续是危险路径,而不是安全路径。这就是 as 将采用的方式,而强制转换会抛出 InvalidCastException,在您有机会用坏数据造成困惑之前中止您正在做的任何事情。

as 如果不是给定类型的对象有效 是好的 - 如果它不表示错误。您几乎总是看到以下模式:

Foo x = y as Foo;
if (x != null)
{
...
}

参见 MSDN有关 as 功能的更多详细信息。

另请注意,您可能不想在您的方法中使用ref。看我的article on parameter passing更多细节。大多数时候,如果我看到人们经常使用 ref,那是因为他们不明白它的真正含义:)

关于c# - 在 C# 中使用 "as"是一种安全的转换方式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6388609/

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