【C#】変数宣言のvarはバリアントではない

C#

C#では、変数を宣言する際にvarというキーワードを使用することができます。varはバリアント型(variant type)ではなく、型推論を行うための仕組みです。型推論とは、コンパイラが右辺の式から変数の型を自動的に判断し、その型を割り当てる仕組みです。

var number = 42;              // 変数 number は int 型に推論されます
var text = "Hello, C#";       // 変数 text は string 型に推論されます
var myList = new List<int>(); // 変数 myList は List<int> 型に推論されます

型推論のメリット

簡潔なコード

varを使用することで冗長な型宣言を避けコードが簡潔になります。

// 通常の型宣言
Dictionary<string, List<int>> myDictionary = new Dictionary<string, List<int>>();

// varを使用した型推論
var myVarDictionary = new Dictionary<string, List<int>>();

コードの変更に強い

右辺の式が変更された場合でも、varを使用することで変数の型が自動的に適応されます。

注意点

varを使用する際は、右辺の式から明らかな型が推論できる必要があります。型が不明瞭な場合は、適切な型を明示的に指定することが重要です。

数値リテラルには使用しない方が良い

数値リテラルにvarを適用すると、かえってバグを生む可能性あり。intやstringなど基本型にはvarを使わない方が良いでしょう。

using System;
class Program
{
    static void Method(float input)
    {
    }

    static void Main()
    {
        var floatVar = 0.0; // 右辺はdoubleと推論される
        Method(floatVar);   // エラー:引数 1: は 'double' から 'float' へ変換することはできません。
    }
}

以下、改善です。

using System;
class Program
{
    static void Method(float input)
    {
    }

    static void Main()
    {
        float floatVar = 0.0;  // floatが欲しいなら、ちゃんと型指定して宣言
        Method(floatVar);
    }
}

まとめ

C#のvarはバリアント型ではなく、型推論を行うための仕組みです。コードを簡潔にし、同時にメンテナンス性を高めることができます。

この記事を参考に、varの使い方や型推論のメリットを実際のコードで試してみてください。

タイトルとURLをコピーしました