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 }
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? 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.
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.
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.
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; } }
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With