'如果'声明和冒号

Bla*_*ael 12 vb.net if-statement colon

这是一段有趣的代码,我的团队成员正在就......进行稍微热烈的讨论.

  Dim fred As Integer

  If True Then fred = 5 : fred = 3 : fred = 6 Else fred = 4 : fred = 2 : fred = 1
Run Code Online (Sandbox Code Playgroud)

执行上面的代码片段后,fred的值是多少?

尽量不要欺骗和调试代码.

这是一个非常人为的代码示例,最初是作为使用带有If语句的冒号的示例,但后来有人决定自己为fred提供结果.

更新:我通常不会编写这样的代码,这个代码片段仅作为示例.碰巧的是,这个问题起源于一个涉及为我们团队创建编码标准文档的讨论.

Sco*_*ski 16

我假设你的意思是VB.Net.

根据VB语言规范中的语法,您可以在这里阅读:

http://www.microsoft.com/Downloads/thankyou.aspx?familyId=39de1dd0-f775-40bf-a191-09f5a95ef500&displayLang=en

结果应为"6".

这是因为"行if语句"的语法是:

If  BooleanExpression  Then  Statements  [  Else  Statements  ]  StatementTerminator
Run Code Online (Sandbox Code Playgroud)

并且"陈述"被定义为

Statements  ::=
[  Statement  ]  |
Statements  :  [  Statement  ]
Run Code Online (Sandbox Code Playgroud)

编辑: 我想注意调试代码不是"作弊".

我曾经在微软的VB编译团队工作.

有时候规范是模棱两可的,或者与我们实际发货时的情况不符.在其中一些案例中,解决方案(我们修复它的方法)始终基于"嗯......编译器现在做了什么".

有时我们会更改编译器,有时我们会更改规范.

但是,在做出决定之前,我们总是运行编译器来查看它实际上做了什么.

所以...调试代码是弄清楚它的作用的重要部分......