2011-08-30 21 views
5

今日私は以前は見たことがなかったC#コードを走り回った。プログラマーは、中括弧のみを使用してコードブロックを定義しました(if、class、functionなどはありません)。C#での浮動中括弧

{ 
    int i = 0; 
} 
i++; //compile error 

コードをもっと整理する以外の目的がありますか?この "浮動"文脈を使うのは良い、悪い、または何の練習ですか?

+0

http://stackoverflow.com/questions/249009/do-you-use-curly-braces-for-additional-scoping – luketorjussen

+1

重複した質問について申し訳ありませんが、私はかなり熱心にグーグルで行ったと思いました! – prestomanifesto

+0

2010年に編集された2008年の質問に** duplicate **と表示されるべきではありません。**間違って**すべての回答が**明らかにc#**でない場合は 'c# 'を含みます。それが**開かれたことを指名する** – MickyD

答えて

9

中括弧の開いたクローズセットを使用して、独自の有効範囲を持つ自己包含ブロックを定義することができます。

これは一般的には良いプログラミング方法ではありません。

通常、誰かがこのようなことをしている場合は、その場所にメソッド/関数を作成する方がよいでしょう。

0

この目的は、int iが実際にはその下のインクリメントされたiとは異なるスコープにあることを示すことです。

1

このコードにはまったく目的がありません。おそらく彼/彼女がやろうとしていた何かからのアーティファクト。コメントとして、iが範囲外であるため、これはコンパイルされません。

私は個人的にそれを気に入らず、以前はコードを整理するためにフローティングブレースを使用したことがありませんでした。

1

中括弧{}はC#で定義されています。中括弧が終了すると、それらの中に定義されたものはすべて「範囲外」になります。

この例は意味がありません。なぜそれが現実世界のコードで使用されるのか想像できません。私はあなたが提示されたコードを守っていると仮定していますか?

+0

実際に使用された方法は、手動でHTMLコードをレンダリングしていたASPページにありました。中カッコは、各要素の内部にあるものを論理的にインデントするために使用されました。 – prestomanifesto

1

これらの中括弧の「スコープ」内の変数は、スコープの外側にありません。

0

これは、変数の範囲をそのブロック内に制限します。したがって変数iはそれらのブレースの外側には見えません。

誰かがコードを分離したいのであれば、それを使用することもできますが、必要でない場合にはこれを使用すると、ほとんどの場合余計になることがあります。