C#のusingキーワードはまずステートメントとディレクティブの2通りに分けられ、
さらにディレクティブに2通りあるので3通りの機能がある。
最も頻繁に使うのは、ディレクティブとして
using System.Collections.Generic; class A { List<string> a; } |
といったような完全修飾名を省略する場合など、使用用途としてはjavaのimportに対応するもの。
対して、ステートメントとしては
string line; using (StreamReader reader = new StreamReader("file.txt")) { line = reader.ReadLine(); } Console.WriteLine(line); |
こういうファイナライズが必要なオブジェクトに対してDisposeメソッド(IDispose実装クラス)を実行してくれる機能がある。
この2つがよく使う有用な機能だと思われるが、さらにCのtypedefのような別名としての使い方がある。
(これをusing alias ディレクティブと呼ぶらしい)
using Hoges = List<Hoge>; // 型や名前空間を指定できる |
この場合のスコープが気になったが、using ディレクティブのスコープは、ディレクティブが記述されているファイルに限定される。また、using aliasディレクティブの右辺は直前のusingディレクティブとは関係なしに完全修飾する必要がある、とのことだがそれは同一スコープの場合っぽい。
usingディレクティブ usingディレクティブ usingディレクティブ usingエイリアスディレクティブ←ここだと直前のusingとは無関係に完全修飾する必要がある。 namespace A{ usingエイリアスディレクティブ←ここだと省略できる。 class A{} } |
コメントを残す