|
1
249
你的理解是真的。对我来说,这听起来像是在尝试微观优化。当您确定类型时,应该使用普通的强制转换。除了生成更合理的异常之外,它也很快失败。如果您对类型的假设是错误的,那么您的程序将立即失败,您将能够立即看到失败的原因,而不是等待
另一方面,如果您不确定演员阵容,并希望它失败,您应该使用
它产生一个
这只会生成一个
以下解决方案是 未推荐的 用于生产代码。如果你真的讨厌C语言中的这种基本结构,你可以考虑切换到VB或其他语言。 如果一个人非常讨厌转换语法,他/她可以编写一个扩展方法来模拟转换:
用干净的语法:
|
|
|
2
42
IMHO,
|
|
|
3
39
使用“as”不应用用户定义的转换,而强制转换将在适当的情况下使用它们。在某些情况下,这可能是一个重要的区别。 |
|
|
4
36
我在这里写了一点: 我理解你的观点。我同意它的观点:一个强制转换操作符传递“我确信这个对象可以转换成那个类型,如果我错了,我愿意冒异常风险”,而一个“as”操作符传递“我不确定这个对象是否可以转换成那个类型;如果我错了,给我一个空值”。 然而,有一个微妙的区别。(x为t),whatever()传递“我不仅知道x可以转换为t,而且这样做只涉及引用或取消绑定转换,而且x不是空的”。它传递的信息与((t)x).whatever()不同,也许这就是代码作者的意图。 |
|
|
5
16
我经常看到提到 this misleading article 证明“as”比铸造更快。 这篇文章中一个更明显的误导性方面是图形,它没有指明被测量的是什么:我怀疑它是在测量 失败 强制转换(其中“as”明显更快,因为没有异常被抛出)。 如果你花时间去测量,你就会发现,正如你所期望的那样, 更快 而不是当演员成功的时候。 我怀疑这可能是“货物崇拜”使用as关键字而不是cast的一个原因。 |
|
|
6
11
直接演员组需要一对括号,而不是
不过,同意了例外情况。但至少对我来说
|
|
|
7
8
当我使用“as”时,99%的时间是当我不确定实际的对象类型时
我不想捕捉显式的强制转换异常,也不想进行两次强制转换,使用“is”:
|
|
|
8
8
这只是因为人们喜欢它的外观,它是非常可读的。 让我们面对现实吧:C语言中的转换/转换操作符非常糟糕,可读性很强。如果C采用以下任意一种JavaScript语法,我希望它更好:
或定义
|
|
|
9
5
人们喜欢
回到主题…当使用直接广播时,有
可能性
对于无效的强制转换异常。所以人们申请
我一般不使用
|
|
|
10
5
这一定是我的 top peeves .
斯特劳斯鲁的D&E和/或一些我现在找不到的博客文章讨论了
之所以没有实现这一点,是因为强制转换会导致疼痛和难看,所以您会被推离使用它。
遗憾的是,“聪明”的程序员(通常是书作者(juval lowy iirc))滥用
即使是vb在使用统一的语法时也有更大的一致性,这迫使您选择
|
|
|
11
2
我相信
|
|
|
12
1
它可能更受欢迎,因为没有技术原因,但只是因为它更容易阅读和更直观。(不说只想回答问题就更好了) |
|
|
13
1
使用“as”的一个原因:
代替(错误代码):
|
|
|
Olivier Lasne · 将i128转换为f64的正确方法是什么 1 年前 |
|
|
Floris · 为什么cpp编译器在类型声明不正确时要转换为int? 1 年前 |
|
|
Bhargav Patil · 运算符的大小并尝试打印数组 1 年前 |
|
|
Vedant Yadav · c中用户定义类中的类型转换++ 1 年前 |
|
|
user25265096 · 从任何可用类型转换接口参数 1 年前 |
|
|
zahl · javascript中的签名int到签名char 2 年前 |