匿名类型是否比声明类型慢?
例如,
Dim score as Double = CalculateScore()
比
慢Dim score = CalculateScore()
为什么使用显式打字,如果它不慢?
答案 0 :(得分:4)
隐式类型变量是"句法糖"。它以任何一种方式编译成完全相同的代码,因此运行时性能不受影响。
为什么要使用明确的声明?
这是开发者或组织的风格/偏好/标准问题。有些人发现代码更清晰或有意透露。
对于记录,匿名类型(通知中没有double-n)是一个内联声明的,或者#34; on-the-fly,"取决于你如何看待它。这是匿名的,因为它没有名字。它是一个临时对象,可用于保存相关数据。
在VB中,通过调用Dim anon = New With { .Name = "Moderator71", .Id = 19 }
来声明它
您可以选择将某些属性声明为Key。
答案 1 :(得分:1)
不,匿名或推断类型的速度没有差异。
但也许你在谈论动态类型,它们会慢一些。
您的(第二个)代码示例建议使用推断类型,这意味着score
将在编译时确定为double
答案 2 :(得分:1)
为什么要使用显式输入?
可读性可能是一个。
答案 3 :(得分:1)
假设CalculateScore函数返回double。
不,这是相反的方式。将其声明为Double将始终尽可能快。当Option Infer On生效时,省略声明的速度会很快。如果不是那么它将是Object类型的变量。双重装箱。
在VB.NET中,拆箱非常昂贵,因为它允许拆箱到任何兼容类型,而不仅仅是Double。与C#不同,如果存在不匹配,则抛出异常。
答案 4 :(得分:0)
使用显式键入vs impred的原因是因为它将大量错误从运行时移动到编译时。由于IDE,我可以在几秒钟内修复编译时错误。如果在运行时发生错误,那么在某人运行该特定代码行之前可能需要几个月甚至几年,或者用户可能每天都会遇到它,但它可能需要很长时间才能回到我身边并且我可以修复它。我叫那些定时炸弹。你不知道他们何时何地会离开。
我的第一个目标是编写不会爆炸的代码,因此编译时错误非常棒。