首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >关于c# if-else语法

关于c# if-else语法
EN

Stack Overflow用户
提问于 2012-07-17 18:41:06
回答 8查看 547关注 0票数 0

在c#中,您可以定义一个不使用大括号的if语句,如下例所示

代码语言:javascript
运行
复制
  if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
                this.Exit();

这里的this.Exit();是与if关联的语句。但它不在大括号中,所以我的问题是,它与if有什么关系?

我了解到编译器忽略了空格,在这种情况下,这在逻辑上没有意义。答案很简单,就是IDE找到缩进并在编译时自动将其放在大括号中?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2012-07-17 19:35:33

C#和Java中的大括号基本上是多个语句,一个基本理解为特定情况下的作用域的块集。

  • ,你可以把一条或多条语句放在大括号里,或者把这个区域留空,不管你在那里是否只有一些注释。默认情况下,
  • 编译器会查找代码中的每个字符,所以它会逐个查找字符,当它看到开始的{时,它就会期望有一个结束的}。如果发现更多的左大括号,它将继续计数代码块。
  • 如果在if/else/foreach/for/do/while之后没有开始的{,则编译器认为任何立即语句都是其块的一部分,如果由;
  • You终止,甚至如果您立即将;

放在if/else/foreach/for/do/while之后,则if/else/foreach/for/do/while后面甚至没有语句

我有我的发现,可能很多人已经知道或正在使用它,所以我提出这个问题……

  • { }块可以有多种用途。在所有循环、if-else语句中,甚至在switch-case中,都可以使用大括号将代码放入作用域中。对我来说,将case语句放在块中真的很有帮助。如果你在一种情况下定义了一个变量,那么你就不能在另一种情况下在相同的开关下使用相同的名称来定义它。因此,我使用以下语法:

int abc = 1;switch (abc) {案例1:{ var x= 11;} break;案例2:{ var x= 11;//其合法。}中断;情况3: var x= 11;//这里也是非法的..因为我们在以前的作用域中已经有了它。中断;情况4:{ var x= 11;//在这里它是非法的,因为我们已经在父/当前作用域中有一个。} break;}

  • 你也可以用同样的方法声明变量:

..。{ var xx = 10;} // xx -上面的一些代码不可用,因为它在内部作用域{ var xx = 11;//它是合法的,因为它是在内部作用域中声明的。} // xx -再次不可用,因为它在内部作用域中声明...下面的一些代码

摘要:

  • 如果在if/else/foreach/for/do/while之后没有左大括号{,则认为下一个立即语句是if/else/foreach/for/do/while块的一部分。
  • 您可以在连续语句中创建尽可能多的作用域,以使用相同的变量名。
票数 1
EN

Stack Overflow用户

发布于 2012-07-17 18:45:57

;将结束该语句。

Statements (C# Programming Guide)

语句可以由以分号结尾的单行代码组成,也可以由块中的一系列单行语句组成。语句块包含在{}个括号中,并且可以包含嵌套的块。

票数 3
EN

Stack Overflow用户

发布于 2012-07-17 18:48:17

当您的代码被编译器解析时,它将每个部分分解成一个词块。'if‘语句的语法为:

代码语言:javascript
运行
复制
if ( Expression ) Statement else Statement

代码语言:javascript
运行
复制
if ( Expression ) Statement

语句可以是语句块(即用大括号括起来),也可以是单个语句。在您的代码中,由于表达式已被关闭并且'this.Exit()‘符合语句的语法,因此这个is.Exit()调用与if块相关联。

http://ecma-international.org/ecma-262/5.1/

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11520812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档