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
の使い方や型推論のメリットを実際のコードで試してみてください。