2009年10月27日

【var変数】varが有効な場面

前回のつづきになりますが、var変数が有効な場面をいくつか挙げてみます。
いずれも有効な場面と紹介されることが多いパターンですが、必ずvarを使ったほうが良い訳ではないです。
あくまで参考までに

for文のループ変数に使うパターン
class Program
{
    static void Main(string[] args)
    {
        for (var i = 0; i < 10; i++)
        {
             // 処理
        }
    }
}
varじゃなくて、intで良いじゃないかという意見は多いと思います。
タイプ数も同じだからあまり利点は無いのですが、ただ単にループすることが目的で、
変数iを一切参照しない場合には、型にこだわりが無いことが明確になるので良いかもしれません。

foreach文で使うパターン
class Program
{
    static void Main(string[] args)
    {
        // Dictionaryオブジェクトに値をセット
        Dictionary<int, string> dict = new Dictionary<int, string>();
        dict.Add(1, "一番");
        dict.Add(2, "二番");
        dict.Add(3, "三番");

        foreach (var kvp in dict)
        {
            // KeyとValueを表示
            Console.WriteLine(kvp.Key + kvp.Value);
        }
    }
}
結構おすすめに挙げられることが多いパターンです。
foreach文の見通しが良くなるのがメリットですね。
デメリットは、型が一見して分からなくなることです。
上の例のkvp変数は、本来KeyValuePair<int, string>型なのですが、これを長くて冗長だからvarとするか、
型が分かりにくいからKeyValuePair<int, string>と書くかは、どっちが良いか微妙なところです。
邪道ですが、列挙される型がすぐに分からない時に、一時的にvarと書いてIDEで型を確認するという使い方は有りだと思われます。

usingステートメントで使うパターン
class Program
{
    static void Main(string[] args)
    {
        // usingステートメントで、StreamWriterをnewして使用する
        using (var sw = new StreamWriter(@"log.txt", true, Encoding.GetEncoding("Shift_JIS")))
        {
            sw.WriteLine("ファイルに書き込み");
            sw.Close();
        }
    }
}
varを使わないとクラス名が2回繰り返されるパターンです。
見通しが良くなり、型も分かりにくくならないので積極的に使えそうです。
3つのパターンの中では一番おすすめです。

var変数の先頭記事へ var変数の次の記事へ
ラベル:var変数
posted by 吾一 at 23:00| 3. var変数 | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。