C#の変数とは?宣言・型・使い方を初心者向けにわかりやすく解説

はじめに

C#でプログラミングを始めると、最初に学ぶことの一つが「変数」です。変数は、数値や文字列などのデータを一時的に保存し、プログラムの中で利用するために欠かせません。

たとえば、ユーザーの名前、商品の価格、ゲームの得点などを扱う場合、それぞれのデータを変数に入れて管理します。

string userName = "佐藤";int score = 100;

この例では、userNameという変数に「佐藤」、scoreという変数に100を保存しています。

この記事では、C#の変数について、宣言方法、型、代入、使い方、スコープ、定数との違いなどを初心者向けにわかりやすく解説します。

1. C#の変数とは?

1-1. 変数は「データを一時的に入れておく箱」

変数とは、プログラムで使用するデータを一時的に保存しておく場所です。初心者向けの説明では、よく「名前が付いた箱」にたとえられます。

たとえば、年齢を保存する箱を用意する場合は、次のように記述します。

int age = 20;

このコードでは、それぞれの部分に次の意味があります。

  • int:保存するデータの型

  • age:変数の名前

  • 20:変数に保存する値

ageという名前の箱を用意し、その中に整数の20を入れているイメージです。

1-2. C#で変数を使う理由

変数を使う主な理由は、データをわかりやすく管理し、繰り返し利用できるようにするためです。

変数を使わず、同じ値を直接何度も記述すると、値を変更するときにすべての場所を書き換えなければなりません。

Console.WriteLine(1000 * 2);Console.WriteLine(1000 * 3);Console.WriteLine(1000 * 5);

商品の価格を変数にすると、次のように整理できます。

int price = 1000;

Console.WriteLine(price * 2);Console.WriteLine(price * 3);Console.WriteLine(price * 5);

価格を変更したい場合は、priceに代入する値を1か所変更するだけです。変数を使うことで、コードが読みやすくなり、修正もしやすくなります。

1-3. 変数と値の関係を初心者向けに解説

変数はデータを保存する場所であり、値は変数の中に保存される具体的なデータです。

int score = 80;

この場合、scoreが変数で、80が値です。

変数には、あとから別の値を代入することもできます。

int score = 80;score = 100;

最初は80だったscoreの値が、2行目の代入によって100に変更されます。通常、変数には現在代入されている最新の値が保存されています。

2. C#の変数宣言の基本

2-1. 変数宣言の基本構文

C#で変数を宣言するときは、基本的に次の形式で記述します。

データ型 変数名;

整数を保存する変数を宣言する例は、次のとおりです。

int number;

このコードによって、整数を保存できるnumberという変数が用意されます。

C#では、基本的に文の最後にセミコロン;を付けます。セミコロンを忘れるとコンパイルエラーになるため注意しましょう。

2-2. 型を指定して変数を宣言する方法

C#の変数には、保存するデータの種類を表す「型」があります。

int age;string name;bool isActive;

それぞれの変数に保存できるデータは異なります。

  • age:整数

  • name:文字列

  • isActivetrueまたはfalse

C#は静的型付け言語です。変数の型はコンパイル時に決まり、原則として異なる型の値を自由に代入することはできません。

2-3. 変数に値を代入する方法

変数に値を入れることを「代入」と呼びます。代入には=演算子を使用します。

int age;age = 20;

=は、数学で使う「左右が等しい」という意味ではありません。C#では、右側の値を左側の変数に保存するという意味です。

次のコードでは、price1500を代入しています。

int price;price = 1500;

2-4. 宣言と代入を同時に行う方法

変数の宣言と最初の代入は、1行で同時に行えます。

int age = 20;string name = "田中";bool isMember = true;

変数を宣言すると同時に最初の値を設定することを「初期化」と呼びます。

変数を宣言しただけで値を入れないと、場所によっては使用時にエラーになることがあります。そのため、必要な初期値が決まっている場合は、宣言と初期化を同時に行うのがわかりやすい書き方です。

3. C#でよく使う変数の型

3-1. int型:整数を扱う

int型は、小数点を含まない整数を扱う型です。

int age = 25;int score = 100;int temperature = -5;

年齢、個数、得点など、整数で表現できるデータに適しています。

int型で扱える範囲を超える大きな整数が必要な場合は、long型などを使用します。

long population = 8000000000L;

3-2. double型・float型:小数を扱う

小数を扱う代表的な型には、double型とfloat型があります。

double height = 170.5;float weight = 60.5f;

C#では、小数リテラルは通常double型として扱われます。float型の値を直接記述するときは、末尾にfまたはFを付けます。

float rate = 1.5f;

一般的な小数計算ではdoubleがよく使われます。ただし、金額のように誤差をできるだけ避けたいデータには、decimal型が適しています。

decimal price = 1980.50m;

decimal型のリテラルには、末尾にmまたはMを付けます。

3-3. string型:文字列を扱う

string型は、名前やメッセージなどの文字列を扱う型です。文字列はダブルクォーテーション"で囲みます。

string name = "鈴木";string message = "こんにちは";

複数の文字列を+演算子で連結することもできます。

string firstName = "太郎";string lastName = "山田";string fullName = lastName + firstName;

Console.WriteLine(fullName);

文字列の中に変数の値を埋め込む場合は、文字列補間を使うと読みやすくなります。

string name = "山田";int age = 20;

Console.WriteLine($"名前は{name}、年齢は{age}歳です。");

3-4. bool型:true/falseを扱う

bool型は、真偽値であるtrueまたはfalseを保存する型です。

bool isLogin = true;bool hasPermission = false;

条件を満たしているか、機能が有効か、処理が成功したかといった状態を表すときに使用します。

bool isAdult = true;

if (isAdult){Console.WriteLine("成人です。");}

3-5. char型:1文字を扱う

char型は、1文字だけを扱う型です。値はシングルクォーテーション'で囲みます。

char grade = 'A';char symbol = '!';char initial = 'T';

string型ではダブルクォーテーション、char型ではシングルクォーテーションを使う点に注意しましょう。

string text = "A";char character = 'A';

見た目が似ていても、string型とchar型は異なる型です。

4. C#の変数の使い方をコード例で解説

4-1. 数値を変数に入れて計算する

数値を変数に保存すると、四則演算などの計算に利用できます。

int price = 1200;int quantity = 3;int total = price * quantity;

Console.WriteLine(total);

実行結果は次のとおりです。

3600

計算結果も別の変数に保存できます。変数名をtotalのように意味のある名前にすると、何を計算しているコードなのか理解しやすくなります。

割り算をするときは、型に注意が必要です。

int result = 5 / 2;Console.WriteLine(result);

この結果は2です。両方がint型の場合、小数部分は保存されません。小数まで求める場合は、double型などを使います。

double result = 5.0 / 2.0;Console.WriteLine(result);

この結果は2.5です。

4-2. 文字列を変数に入れて表示する

文字列を変数に入れ、Console.WriteLineで表示できます。

string userName = "佐藤";Console.WriteLine(userName);

文章と変数の値を一緒に表示する場合は、文字列補間が便利です。

string productName = "ノート";int price = 300;

Console.WriteLine($"{productName}の価格は{price}円です。");

実行結果は次のようになります。

ノートの価格は300円です。

4-3. bool型の変数を条件分岐で使う

bool型の変数は、if文による条件分岐でよく使われます。

bool isLoggedIn = true;

if (isLoggedIn){Console.WriteLine("ログインしています。");}else{Console.WriteLine("ログインしていません。");}

isLoggedIntrueなら最初の処理、falseならelse側の処理が実行されます。

比較結果をbool型の変数に保存することも可能です。

int age = 20;bool isAdult = age >= 18;

Console.WriteLine(isAdult);

ageが18以上なので、isAdultにはtrueが代入されます。

4-4. 変数の値をあとから変更する

変数の値は、宣言したあとで変更できます。

int score = 50;Console.WriteLine(score);

score = 80;Console.WriteLine(score);

実行結果は次のとおりです。

5080

現在の値を使って更新することもできます。

int score = 50;score = score + 10;

Console.WriteLine(score);

scoreの値は60になります。次のように短く書くこともできます。

score += 10;

1だけ増減させる場合は、++--を使用できます。

int count = 0;

count++;count--;

Console.WriteLine(count);

5. varを使った変数宣言

5-1. varとは?

C#では、型名の代わりにvarを使ってローカル変数を宣言できます。

var age = 20;var name = "佐藤";var isActive = true;

varを使うと、右辺の値からコンパイラが型を推論します。この例では、各変数の型は次のように決まります。

  • ageint

  • namestring

  • isActivebool

varは「どのような型でも自由に代入できる型」ではありません。一度型が推論されると、その変数の型は変わりません。

var number = 10;// number = "文字列";  // int型の変数なのでエラー

5-2. varを使える場面

varは、主にメソッド内のローカル変数で使用します。宣言時に型を判断できる値を代入する必要があります。

var count = 10;var message = "完了しました";var numbers = new List<int>();

右辺を見れば型が明らかな場合は、varを使うことでコードを簡潔にできます。

var users = new List<string>();

型名を明示すると、次のようになります。

List<string> users = new List<string>();

どちらもList<string>型の変数です。

5-3. varを使うときの注意点

varを使う場合は、宣言と同時に値を代入しなければなりません。

// var number;  // 型を推論できないためエラー

また、nullだけでは具体的な型を判断できません。

// var name = null;  // 型を推論できないためエラー

型を明示すれば、nullで初期化できる場合があります。

string? name = null;

varを多用すると、コードを見ただけでは変数の型がわかりにくくなることがあります。右辺から型を判断しにくい場面では、型名を明示したほうが読みやすくなります。

5-4. 型指定とvarの使い分け

型指定とvarのどちらを使うかは、コードの読みやすさを基準に判断します。

型を明示すると、変数の種類がすぐにわかります。

int totalPrice = 5000;

一方、右辺から型が明確な場合は、varでも意味が伝わります。

var products = new List<string>();

C#の学習を始めたばかりの段階では、まず型を明示して、それぞれの型の特徴を覚える方法がおすすめです。型に慣れてから、読みやすさを損なわない範囲でvarを使うとよいでしょう。

6. C#の変数名の付け方

6-1. 変数名に使える文字とルール

C#の変数名には、文字、数字、アンダースコア_などを使用できます。ただし、数字から始めることはできません。

使用できる例は次のとおりです。

int score;int score1;int userAge;int _count;

次のような変数名は使用できません。

// int 1score;      // 数字から始まっている// int user-name;   // ハイフンが含まれている// int user name;   // 空白が含まれている

C#では日本語の変数名も使用できますが、一般的な開発では英単語を使うことが多いでしょう。

6-2. わかりやすい変数名を付けるコツ

変数名は、その変数に何が保存されているのか理解できる名前にします。

次の名前だけでは、用途がわかりにくくなります。

int a = 1000;int b = 3;int c = a * b;

意味のある名前を付けると、コードの内容が明確になります。

int unitPrice = 1000;int quantity = 3;int totalPrice = unitPrice * quantity;

変数名を考えるときは、次の点を意識しましょう。

  • 保存するデータの意味が伝わる

  • 必要以上に省略しない

  • 長すぎる名前にしない

  • 同じ意味の言葉を統一する

  • bool型は状態がわかる名前にする

bool型では、ishascanなどから始めると意味が伝わりやすくなります。

bool isActive = true;bool hasPermission = false;bool canEdit = true;

6-3. C#でよく使われる命名規則

C#のローカル変数やメソッドの引数には、一般的にキャメルケースが使われます。キャメルケースでは、最初の単語を小文字で始め、2語目以降の先頭を大文字にします。

string userName;int totalPrice;bool isLoggedIn;

クラス名、メソッド名、プロパティ名などでは、先頭の単語も大文字にするパスカルケースがよく使われます。

class ProductService{public string ProductName { get; set; } = "";}

複数人で開発するときは、プロジェクトやチームで決められた命名規則に従うことが重要です。

6-4. 予約語を変数名に使えない理由

C#には、プログラム上で特別な意味を持つ予約語があります。

代表的な予約語には、次のようなものがあります。

intstringclasspublicifelsereturn

これらはC#の構文として使用されるため、通常はそのまま変数名にできません。

// string class = "A";  // エラー

予約語の前に@を付けると識別子として使用できます。

string @class = "A";

ただし、コードが読みにくくなりやすいため、特別な理由がなければ予約語と同じ変数名は避けましょう。

7. 変数のスコープと有効範囲

7-1. スコープとは?

スコープとは、宣言した変数を使用できる範囲のことです。

C#では、波かっこ{}で囲まれたブロックがスコープを作ります。

{int number = 10;Console.WriteLine(number);}

// Console.WriteLine(number); // スコープ外なのでエラー

numberは波かっこの内側で宣言されているため、その外側からは使用できません。

7-2. ローカル変数とは?

ローカル変数とは、メソッドやブロックの中で宣言される変数です。

static void ShowMessage(){string message = "こんにちは";Console.WriteLine(message);}

この例のmessageはローカル変数です。ShowMessageメソッドの中でのみ使用できます。

if文やfor文の中で宣言した変数も、基本的にはそのブロック内でのみ有効です。

if (true){int score = 100;Console.WriteLine(score);}

// Console.WriteLine(score); // エラー

7-3. フィールドとは?

フィールドとは、クラスや構造体の内部で、メソッドの外側に宣言される変数です。

class Player{private int score = 0;

public void AddScore(){score += 10;}public void ShowScore(){Console.WriteLine(score);}

}

この例のscoreはフィールドです。同じクラス内の複数のメソッドから利用できます。

ローカル変数は一つの処理の中で一時的に使うデータに向いており、フィールドはオブジェクトが持つ状態を保存するのに向いています。

7-4. 変数を使える範囲の注意点

変数は、必要な範囲だけで宣言することが大切です。広い範囲で使える変数が増えると、どこで値が変更されたのか追いにくくなります。

int total = 0;

for (int i = 1; i <= 3; i++){total += i;}

Console.WriteLine(total);

この例では、ifor文の中だけで使い、totalはループのあとでも使うため、ループの外で宣言しています。

同じ名前の変数を別の場所で使うと、混乱の原因になる場合もあります。変数を宣言するときは、用途とスコープを意識しましょう。

8. 定数との違い

8-1. 変数と定数の違い

変数は、あとから値を変更できます。

int score = 10;score = 20;

一方、定数は一度決めた値をあとから変更できません。C#では、constキーワードを使って定数を宣言します。

const double TaxRate = 0.1;

定数に再代入しようとするとエラーになります。

const int MaxScore = 100;// MaxScore = 200;  // エラー

8-2. constの使い方

constは、コンパイル時に値が決まっていて、その後も変わらないデータに使用します。

const int DaysInWeek = 7;const double Pi = 3.141592;const string AppName = "SampleApp";

定数名には、パスカルケースを使うのが一般的です。

定数を使うと、コード内に同じ数値や文字列を何度も直接書かずに済みます。

const double TaxRate = 0.1;

double price = 1000;double tax = price * TaxRate;

0.1が税率であることが名前からわかるため、コードの意図が明確になります。

8-3. readonlyとの違い

readonlyも、値の変更を制限するためのキーワードです。ただし、constとは値を設定できるタイミングが異なります。

readonlyフィールドは、宣言時またはコンストラクター内で値を設定できます。

class User{private readonly string userId;

public User(string id){userId = id;}

}

constはコンパイル時に値が確定している必要があります。一方、readonlyはオブジェクトの生成時に値を決められます。

たとえば、現在日時をconstにすることはできませんが、readonlyフィールドには設定できます。

class Sample{private readonly DateTime createdAt = DateTime.Now;}

8-4. 変更しない値は定数にするべき理由

変更しない値を定数にすると、誤って書き換えることを防げます。

const int MaximumRetryCount = 3;

また、値の意味が名前で表現されるため、コードが読みやすくなります。

if (retryCount >= MaximumRetryCount){Console.WriteLine("再試行回数の上限に達しました。");}

数値を直接書くよりも、MaximumRetryCountと記述したほうが、その値の目的を理解しやすくなります。

ただし、将来変更される可能性がある設定値は、必ずしもconstにするべきとは限りません。設定ファイルやデータベースから読み込む方法が適している場合もあります。

9. C#の変数で初心者がよく間違えるポイント

9-1. 型が合わない値を代入してしまう

変数の型と代入する値の型が合っていないと、エラーになります。

int age = 20;// age = "二十歳";  // string型なのでエラー

文字列として保存する場合は、変数もstring型にします。

string ageText = "二十歳";

型を変換できる場合は、明示的な変換を行います。

string input = "20";int age = int.Parse(input);

変換できない文字列が入力される可能性がある場合は、int.TryParseを使うと安全です。

string input = "20";

if (int.TryParse(input, out int age)){Console.WriteLine($"年齢は{age}歳です。");}else{Console.WriteLine("整数に変換できませんでした。");}

9-2. 初期化していない変数を使おうとする

ローカル変数は、値を代入する前に読み取ることができません。

int score;// Console.WriteLine(score);  // 初期化されていないためエラー

使用する前に値を代入しましょう。

int score = 0;Console.WriteLine(score);

最初の値が決まっていない場合でも、用途に合った初期値を設定できるか検討します。ただし、意味のない初期値を入れると不具合につながることもあるため、変数を使う直前に宣言する方法も有効です。

9-3. 変数名の大文字・小文字を間違える

C#では、英字の大文字と小文字が区別されます。

int score = 100;// Console.WriteLine(Score);  // 別の名前として扱われるためエラー

scoreScoreSCOREは、それぞれ異なる識別子として扱われます。

int score = 10;int Score = 20;

Console.WriteLine(score);Console.WriteLine(Score);

このような書き方は混乱しやすいため、大文字・小文字だけが異なる変数名を同じ範囲で使うことは避けましょう。

9-4. スコープ外の変数を使おうとする

ブロック内で宣言した変数は、そのブロックの外では使用できません。

if (true){string message = "処理に成功しました。";}

// Console.WriteLine(message); // スコープ外なのでエラー

ブロックの外でも使う必要がある場合は、外側で変数を宣言します。

string message;

if (true){message = "処理に成功しました。";}else{message = "処理に失敗しました。";}

Console.WriteLine(message);

ただし、変数のスコープは必要以上に広げないことも重要です。

10. C#の変数に関するよくある質問

10-1. C#で変数を宣言するには?

C#では、基本的に「型名、変数名、セミコロン」の順番で変数を宣言します。

int number;

宣言と同時に値を代入する場合は、次のように記述します。

int number = 10;

右辺から型を推論できるローカル変数では、varも使用できます。

var number = 10;

10-2. C#のvarは使ってもいい?

varはC#の正式な機能なので、使用して問題ありません。

ただし、右辺から型がわかりにくい場所で多用すると、コードの理解に時間がかかることがあります。型が明確でコードが読みやすくなる場面で使うことが大切です。

var names = new List<string>();

初心者は、まずintstringなどの型を明示して、型の仕組みに慣れてからvarを使うと理解しやすいでしょう。

10-3. 変数と型の違いは?

変数は、値を保存するための名前付きの領域です。型は、その変数に保存できるデータの種類を示します。

int age = 20;

この場合、次のように分けられます。

  • 変数:age

  • 型:int

  • 値:20

型によって、保存できる値や利用できる処理が変わります。

10-4. 変数の値はあとから変更できる?

通常の変数であれば、型に合った値をあとから代入できます。

int score = 50;score = 100;

ただし、constで宣言した定数には再代入できません。

const int MaxScore = 100;// MaxScore = 200;  // エラー

また、変数の型そのものを途中で変更することはできません。

int number = 10;// number = "10";  // string型の値は代入できない

10-5. 初心者はどの型から覚えるべき?

最初は、次の5つの型から覚えるとよいでしょう。

  • int:整数

  • double:小数

  • string:文字列

  • bool:真偽値

  • char:1文字

特にintstringboolは、多くのプログラムで頻繁に使います。

int age = 20;string name = "高橋";bool isStudent = true;

基本の型に慣れたら、longdecimal、配列、List<T>、独自クラスなど、扱うデータに応じた型を学んでいきましょう。

まとめ

C#の変数は、数値や文字列などのデータを一時的に保存し、プログラムの中で利用するための仕組みです。

変数を宣言するときは、基本的に型と変数名を記述します。

int age = 20;string name = "佐藤";bool isActive = true;

C#の変数を扱ううえでは、次のポイントが重要です。

  • 変数には保存するデータに合った型を指定する

  • 宣言した変数は使用前に初期化する

  • 用途が伝わる変数名を付ける

  • 大文字と小文字を正しく区別する

  • 変数のスコープを意識する

  • 変更しない値にはconstreadonlyを検討する

  • varは右辺から型が明確な場面で使う

変数は、条件分岐、繰り返し、メソッド、クラスなど、C#のほぼすべての処理で使用します。まずはintstringboolなどの基本的な型を使い、宣言、代入、参照、値の変更を実際に試しながら覚えていきましょう。