簡體   English   中英

關於C#if-else語法

[英]About c# if-else syntax

在C#中,您可以不使用花括號就定義一個if語句,例如本例

  if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
                this.Exit();

這是this.Exit(); 是與if相關聯的語句。 但這不是大括號,所以我的問題是,它與if有何關系?

我了解到編譯器會忽略空白,在這種情況下,這在邏輯上是沒有意義的。 答案是否僅僅是IDE找到縮進並在編譯時自動將其放在花括號中?

; 結束語句。

語句(C#編程指南)

一條語句可以由以分號結尾的單行代碼或塊中的一系列單行語句組成。 語句塊包含在{}中,並且可以包含嵌套塊。

當編譯器解析您的代碼時,它將每個部分分成一個詞法塊。 'if'語句的語法為:

if ( Expression ) Statement else Statement

要么

if ( Expression ) Statement

語句可以是語句塊(即用大括號括起來)或單個語句。 在您的代碼中,由於表達式已關閉並且'this.Exit() '符合語句的語法,因此, is.Exit()調用與if塊相關聯。

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

C#和Java中的花括號基本上使多個語句成為一個塊集,基本上可以將其理解為特定情況下的作用域。

  • 您可以將1個或多個語句括在花括號中,也可以將該區域留空,無論其中是否有注釋。

  • 默認情況下,編譯器會查找代碼中寫入的每個字符,因此它逐個字符移動,並且在看到打開{時,它預計必須有一個結束符} 如果找到更多的開括號,它將繼續計數代碼塊。

  • 如果在if/else/foreach/for/do/while之后沒有打開{ if/else/foreach/for/do/while那么編譯器會將任何立即語句視為由其終止的立即語句作為其塊的一部分;

  • 如果您立即輸入; if/else/foreach/for/do/while則在if/else/foreach/for/do/while之后甚至都沒有語句;

我的發現是,可能已經有很多人知道或使用了,所以憑借這個問題,我提出了...

  • { }塊可以有多種用途。 在所有循環中, if-else語句,甚至在switch-case都可以使用花括號將代碼放入作用域中。 對我來說,將case語句放在塊中非常有幫助。 如果在一種情況下定義變量,那么在同一開關下在另一種情況下不能用相同的名稱定義變量...因此,我使用以下語法:

      int abc = 1; switch (abc) { case 1: { var x = 11; } break; case 2: { var x = 11; // its legal. } break; case 3: var x = 11; // its ilegal here too.. because we already have it in previous scope. break; case 4: { var x = 11; // its illegal here because we already have a in the parent/current scope. } break; } 
  • 您也可以使用相同的想法聲明變量:

      ... some code above { var xx = 10; } // xx - is not available as it was declared in the inner-scope { var xx = 11; // Its legal, because its declared in inner-scope. } // xx - is again not available as it was declared in the inner-scope ... some code below 

摘要:

  • 如果在if/else/foreach/for/do/while之后沒有開括號{if/else/foreach/for/do/while下一個立即執行語句被視為if/else/foreach/for/do/while塊的一部分。
  • 您可以在順序語句中創建盡可能多的作用域以使用相同的變量名。

它僅適用於一行,因此,如果要讓if語句包含多行,則應使用花括號。

因此,編譯器知道,有一個if語句不帶花括號,它應該在下一行使用(假設條件為真)。

不,大括號用於多行語句。 因此,空格和縮進無關緊要。 您可以在if語句的同一行上調用this.Exit(),這仍然可以。 有些人仍然更喜歡在單行語句中使用大括號以提高可讀性,這是一個選擇問題。

對於if中的單個Line語句,無需將語句放在大括號中。

如果需要執行多個語句,則需要大括號。

在C#中,if語句基於括號運行命令,就像我們使用帶括號的if一樣。 如果沒有括號,則在語句為true時運行下一條命令,然后在其后運行命令。 如果條件為假,則繼續執行下一個命令。

“;”指向語句結尾/終止點。 因此,當編譯器首先找到它時,它將其包含在IF塊中,而不將其包含在IF子句中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM