[C#] ネストした using 句でも、 ネストを深くしない方法
Microsoft Connect Feedback ID = 349656 より。
ディスカッション欄で Azulean 氏が答えておられるのですが、 using 句はこんな風に書いても OK だったんですね~ f(^^;
# 知りませんでした… orz
using (TextReader tr = new StreamReader("hoge.txt"))
using (TextWriter tw = new StreamWriter("moge.txt"))
{
string line = tr.ReadLine();
tw.WriteLine(line);
}
このように書いてから、 Visual Studio の自動フォーマットを掛けても、 インデントは変わりませんでした。 つまり、 using 句を何重にネストさせようとも、 インデントは 1ネスト分で済むわけですね。 (^^;
ちなみに、 C# の言語仕様書を見ると、 こうなってました。
8.13 The using statement
The using statement obtains one or more resources, executes a statement, and then disposes of the resource.
using-statement:
using ( resource-acquisition ) embedded-statement
resource-acquisition:
local-variable-declaration
expression
この定義で、 embedded-statement っていうのは、 ( using 句の中に埋め込まれる ) ひとつのステートメントのことです。
そして、 ステートメントとして using 句を書くことは、 禁止されていません。 つまり、上に示した書き方も OK である、 と。
# 言われてみれば、 あたりまえの気がしてきた。 なんで中括弧が必要だと思い込んでたんだろう? f(^^;
また、 using で使うリソースが同じ型なら、
using (TextReader tr1 = new StreamReader("hoge.txt"), tr2 = new StreamReader("moge.txt"))
{
string line1 = tr1.ReadLine();
string line2 = tr2.ReadLine();
}
…っていう記述も OK です。
# …けど、 変数宣言をカンマで並べるの、 禁止~っ! f(^^;
| 固定リンク
「プログラミング」カテゴリの記事
- 【.NET / Win8.1 ストアアプリ】 HttpClient で TLS 1.1 / 1.2 に対応するには(2018.06.17)
- 【VS2017 15.7pv2】 XAML のランタイム ツールに 「ヒートマップ」 が増えた(2018.03.28)
- 【.NET Core】 プロジェクトを作ると 「project.assets.json が見つかりません」 エラー(2018.02.10)
- 【#UWP】 ビットマップの表示色を変える (Win2D.uwp 経由で Direct2D を使う)(2017.08.23)
- 【#UWP】 CompactOverlay モード: Picture in Picture というか、「最前面に表示」するウィンドウを作る(2017.08.16)
この記事へのコメントは終了しました。
コメント