Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# Switch statement with/without curly brackets.... what's the difference?

Has C# always permitted you to omit curly brackets inside a switch() statement between the case: statements?

What is the effect of omitting them, as javascript programmers often do?

Example:

switch(x) {   case OneWay:   {                               //  <---- Omit this entire line     int y = 123;     FindYou(ref y);     break;   }                               //  <---- Omit this entire line   case TheOther:   {                               //  <---- Omit this entire line     double y = 456.7; // legal!     GetchaGetcha(ref y);     break;   }                               //  <---- Omit this entire line } 
like image 296
makerofthings7 Avatar asked Sep 06 '10 14:09

makerofthings7


People also ask

What C is used for?

C programming language is a machine-independent programming language that is mainly used to create many types of applications and operating systems such as Windows, and other complicated programs such as the Oracle database, Git, Python interpreter, and games and is considered a programming foundation in the process of ...

What is C in C language?

What is C? C is a general-purpose programming language created by Dennis Ritchie at the Bell Laboratories in 1972. It is a very popular language, despite being old. C is strongly associated with UNIX, as it was developed to write the UNIX operating system.

What is the full name of C?

In the real sense it has no meaning or full form. It was developed by Dennis Ritchie and Ken Thompson at AT&T bell Lab. First, they used to call it as B language then later they made some improvement into it and renamed it as C and its superscript as C++ which was invented by Dr.

Is C language easy?

Compared to other languages—like Java, PHP, or C#—C is a relatively simple language to learn for anyone just starting to learn computer programming because of its limited number of keywords.


2 Answers

Curly braces are not required, but they might come in handy to introduce a new declaration space. This behavior hasn't changed since C# 1.0 as far as I know.

The effect of omitting them is that all variables declared somewhere inside the switch statement are visible from their point of declaration throughout all case branches.

See also Eric Lippert's example (case 3 in the post):

Four switch oddities

Eric's example:

switch(x) {   case OneWay:     int y = 123;     FindYou(ref y);     break;   case TheOther:     double y = 456.7; // illegal!     GetchaGetcha(ref y);     break; } 

This does not compile because int y and double y are in the same declaration space introduced by the switch statement. You can fix the error by separating the declaration spaces using braces:

switch(x) {   case OneWay:   {     int y = 123;     FindYou(ref y);     break;   }   case TheOther:   {     double y = 456.7; // legal!     GetchaGetcha(ref y);     break;   } } 
like image 56
Dirk Vollmar Avatar answered Sep 30 '22 02:09

Dirk Vollmar


The curly braces are an optional part of the switch block, they are not part of the switch sections. Braces can be inserted within switch sections or equally inserted anywhere to control scope in your code.

They can be useful to limit scope within the switch block. For example:

int x = 5;  switch(x) { case 4:     int y = 3;     break; case 5:     y = 4;     //...                           break; } 

vs...

int x = 5;  switch(x) {   case 4:   {     int y = 3;     break;   }   case 5:   {     y = 4;//compiling error     //...                           break;   } } 

Note: C# will require you to set a value to y within the case 5 block in the first example before using it. This is protection against accidental variable follow through.

like image 27
Brian R. Bondy Avatar answered Sep 30 '22 02:09

Brian R. Bondy