«

»

4月
02

[c#]typedefのようにつかえるusing alias ディレクティブ

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{}
}

コメントを残す

メールアドレスは公開されません

次の HTMLタグおよび属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>