C# Switch文の中括弧の有無...何が違うの?
2023-08-10 03:34:22
質問
C#では、常に
switch()
文の間の
case:
ステートメントの間にあるのでしょうか?
javascriptプログラマがよくやるように、それらを省略するとどのような効果があるのでしょうか?
例を挙げます。
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# 1.0から変わっていません。
これらを省略した場合の効果としては、以下のように
switch
文の内部で宣言されたすべての変数は、すべてのケースブランチを通してその宣言のポイントから見えるということです。
Eric Lippertの例(投稿のケース3)も参照してください。
エリックの例です。
switch(x)
{
case OneWay:
int y = 123;
FindYou(ref y);
break;
case TheOther:
double y = 456.7; // illegal!
GetchaGetcha(ref y);
break;
}
これはコンパイルされません。
int y
と
double y
が導入された同じ宣言空間にある
switch
ステートメントによって導入される同じ宣言空間にあります。中括弧を使って宣言空間を区切ることでエラーを修正することができます。
switch(x)
{
case OneWay:
{
int y = 123;
FindYou(ref y);
break;
}
case TheOther:
{
double y = 456.7; // legal!
GetchaGetcha(ref y);
break;
}
}
関連
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] Rubyのswitch文の書き方
-
[解決済み] Pythonのswitch文の代用品?
-
[解決済み] C#のconstとreadonlyの違いは何ですか?
-
[解決済み] .NETでフォーマット文字列のブレース(中括弧)をエスケープする方法
-
[解決済み] switch文の中で変数を宣言してはいけないのはなぜですか?
-
[解決済み] Stringでswitch文が使えないのはなぜですか?
-
[解決済み] JavaScriptで複数ケースを扱うSwitch文
-
[解決済み] キーワード「ref」と「out」の違いは何ですか?
-
[解決済み] switch文の複数ケース
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】コンパイルエラー「未割り当てのローカル変数を使用しています」が発生したのはなぜですか?
-
[解決済み】プロジェクトビルド時のエラー。エディタでスクリプトにコンパイルエラーがあるため、Playerのビルドにエラーが発生する
-
[解決済み】「namespace x already contains a definition for x」エラーの修正方法は?VS2010にコンバートした後に発生しました。
-
[解決済み】Sequence contains no matching element(シーケンスにマッチする要素がない
-
[解決済み】ORA-01008: すべての変数がバインドされていません。これらはバインドされています。
-
[解決済み】Visual studio 2019がデバッグ時にフリーズする件
-
[解決済み】Swashbuckle/Swagger + ASP.Net Core: "Failed to load API definition" (API定義の読み込みに失敗しました
-
[解決済み】値をNULLにすることはできません。パラメータ名:source
-
[解決済み] 2つのリストを結合する
-
[解決済み] Java のスイッチケース:中括弧付きか中括弧なしか?