0Pricing
C# Academy · レッスン

varによるローカル変数の型推論

型が明らかな場合にvarを使います。

「varによるローカル変数の型推論」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC# Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C# Academyコースには全4レッスンが含まれています。

var とは

var を使うと、初期化子からローカル変数の型をコンパイラに推論させることができます。変数はコンパイル時には引き続き静的に型付けされます。

using System;

class Program {
    static void Main() {
        var count = 10;
        Console.WriteLine(count);
    }
}

var は dynamic ではない

var はコンパイル時に解決されます。var x = 10 は正確には int であり、後から文字列を格納することはできません。

using System;

class Program {
    static void Main() {
        var name = "Ada";
        Console.WriteLine(name.GetType().Name);
    }
}

リテラルからの推論

コンパイラはリテラルを読み取り、型を選択します。1 は int、1.5 は double、"hi" は string になります。

using System;

class Program {
    static void Main() {
        var a = 1;
        var b = 1.5;
        var c = "hi";
        Console.WriteLine(a.GetType().Name + " " + b.GetType().Name + " " + c.GetType().Name);
    }
}

初期化子が必要

型は初期化子から決まるため、var 変数には宣言時に値を代入する必要があります。

using System;

class Program {
    static void Main() {
        var total = 0;
        for (int i = 1; i <= 4; i++) total += i;
        Console.WriteLine(total);
    }
}

明らかな型での var

右辺から型がすでに明らかな場合、たとえばコンストラクター呼び出しの場合に var が役立ちます。型名の繰り返しを避けられます。

using System;
using System.Collections.Generic;

class Program {
    static void Main() {
        var list = new List<int> { 1, 2, 3 };
        Console.WriteLine(list.Count);
    }
}

メソッドの戻り値での var

メソッド名から型が明らかな場合は、戻り値に var を使用できます。

using System;

class Program {
    static int Square(int n) { return n * n; }
    static void Main() {
        var result = Square(6);
        Console.WriteLine(result);
    }
}

foreach での var

要素の型が既知のコレクションを処理する foreach ループでは、var が便利です。

using System;

class Program {
    static void Main() {
        var names = new[] { "Sam", "Lee" };
        foreach (var n in names)
            Console.WriteLine(n);
    }
}

推論される配列

暗黙的に型付けされた配列 new[] { ... } では、値から要素の型が推論されます。

using System;

class Program {
    static void Main() {
        var nums = new[] { 10, 20, 30 };
        Console.WriteLine(nums.Length);
    }
}

var でも型安全性は保たれる

型は固定されているため、後から間違った型を代入すると、明示的な宣言の場合と同様にコンパイルに失敗します。

using System;

class Program {
    static void Main() {
        var x = 5;
        x = 10;
        Console.WriteLine(x);
    }
}

var と匿名型

匿名型には記述できる名前がないため、匿名型には var が必要です。

using System;

class Program {
    static void Main() {
        var point = new { X = 3, Y = 4 };
        Console.WriteLine(point.X + ", " + point.Y);
    }
}

可読性の向上

var を適切に使うと、冗長な部分が減ってコードの位置が揃いやすくなります。特に、長いジェネリック型名で効果的です。

using System;
using System.Collections.Generic;

class Program {
    static void Main() {
        var scores = new Dictionary<string, int> { ["Ann"] = 90 };
        Console.WriteLine(scores["Ann"]);
    }
}

理解度チェック

var の理解度を確認しましょう。

まとめ

var は、初期化子からローカル変数の型を推論するようコンパイラに指示します。そのため、dynamic とは異なり、変数はコンパイル時に静的に型付けされ、型が固定されます。

初期化子が必要で、重複する型名を省略でき、匿名型には必須です。型がすでに明らかな場合は、可読性も向上します。

よくある質問

「varによるローカル変数の型推論」レッスンは無料ですか?

はい。「varによるローカル変数の型推論」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C# Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C# Academyコースには全4レッスンが含まれています。

「varによるローカル変数の型推論」で何を学びますか?

型が明らかな場合にvarを使います。 ブラウザで直接実行するハンズオンコードでC# Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

C# Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのC# Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「varによるローカル変数の型推論」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このC# Academyレッスンでコードを書いて実行できますか?

はい。すべてのC# Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. varによるローカル変数の型推論
  2. varを避けるべき場面
  3. dynamic型
  4. ターゲット型指定されたnew式
← C# Academyに戻る