C# は静的型付け言語です。変数は型をコンパイル時に決定します。変数は明示的な型で宣言するか、var で型推論を使う(コンパイラが値から型を推定する)ことができますが、いずれの場合でも型は固定されます。
変数の宣言
count = ;
name = ;
price = ;
active = ;
age = ;
message = ;
items = List<>();
var は初期化子から型を推定します。var age = 30 はちょうど int age = 30 と同じです。重要なのは、var もなお静的型付けです。型はコンパイル時に固定されます(後から age に文字列を代入することはできません)。推定されるだけで、動的ではありません。
var x = 5;
x = "hi"; // ❌ compile error — x is an int, can't become a string
var y; // ❌ error — var needs an initializer to infer from
var user = new UserService(); // ✅ type is obvious from the right side — var is clean
var count = users.Count;
int total = CalculateComplexValue(); // explicit when the type isn't obvious aids readability
右辺から型が明らかな場合は var を使う(特に長いジェネリック型で冗長性を減らす)、明確さに貢献する場合は明示的な型を使用します。
const double Pi = 3.14159; // compile-time constant (can't change)
readonly int id; // set once (in constructor), then immutable
int a = 1, b = 2; // multiple of the same type
nint nativeInt; // platform-sized integer
int, long, short, byte integers
float, double, decimal floating point (decimal for money — exact)
bool, char, string boolean, character, text
object the base of all types
変数宣言と var の理解は、日々の C# プログラミングの基礎知識です。
重要な概念的ポイントは、var は型推論であり、動的型付けではないということです。これはよくある誤解です。
var ではコンパイラが初期化子から型を推定しますが、型はコンパイル時に固定されます(静的型付けのすべての利点を得られます。型チェック、IntelliSense、パフォーマンス)。ただ、型名を明示的に書く必要がありません。
このため var は便利性です。可読性を向上させます(Dictionary<string, List<int>> のような冗長なジェネリック型の場合は特に)。型システムの緩和ではなく。
var をいつ使うか(右辺から型が明白で冗長性を減らす場合)と明示的な型(明確さに貢献する場合)、組み込み型(特に decimal(金額用)。正確な十進数演算を行います。double とは異なります)、定数(const、readonly)の知識は、C# を書く日々の知識です。
C# が始終静的型付けである(型を明示的に書くか var を使うかは関係なく)こと、変数宣言の慣用句を理解することは、読みやすく、正しい C# コードを記述するための基礎です。そして var は動的ではないというポイントはよく出てくる説明で、言語を適切に理解していることを示します。
ジュニアからシニアまで、詳細な回答付きのIT面接質問ライブラリ。
寄付する