PG日誌

各記事はブラウザの横幅を1410px以上にすると2カラムの見出しが表示されます。なるべく横に広げてみてください。

C#の暗黙的な型指定の使いどころ

C#では暗黙的な型指定として、var というキーワードが用意されています。

右辺から型を自動的に推定してくれる変数宣言のスタイルですが、3文字で宣言できるためタイプ数を減らす的な意味でかなり便利です。

以下のような長い宣言もvarを使用するとかなり短くなります。

// 長い!!
Dictionary<string, Func<int, bool>> f_dispatcher = new Dictionary<string, Func<int, bool>>();

推論型を使うと以下の通り結構すっきりします。また、上と下のコードは完全に同じ意味になります。

// 約半分に削減できる
var f_dispatcher = new Dictionary<string, Func<int, bool>>();

ただし、注意したいのは

var result = this.GetTables();

のように右辺から型が見た目で判断できない場合(主にメソッドの戻り値など)は推論型で受けてしまうと可読性が下がるので避けた方がいいかと思います。

また、注意したいのは複数のインターフェースを継承したクラスの場合以下のように受けると var が object型になってしまうので注意しましょう。

public void Sample(XmlNode parent)
{
    foreach(var node in parent.SelectSingleNode("..."))
    {
        node. // ここまでタイピングするとObject型の候補が表示される
    }
}

XmlNodeにはICloneable, IEnumerable, IXPathNavigableと複数のインターフェースが付与されていますが、推論で選択されるのは Object になります。

すぐに判明するのでたいしたことはないですが注意が必要です。