C#基礎を初心者向けにやさしく解説|文法・環境構築・独学の学び方まで挫折せずにわかる入門ガイド
はじめに
C#基礎を学びたいけれど、「文法が難しそう」「環境構築でつまずきそう」「何から始めればいいかわからない」と感じていませんか。
C#は、Webアプリ、Windowsアプリ、ゲーム開発、業務システムなど幅広い分野で使われているプログラミング言語です。特にMicrosoftの開発環境と相性がよく、初心者でも学習しやすい仕組みが整っています。
この記事では、C#基礎を初心者向けにやさしく解説します。C#とはどんな言語なのか、開発環境の準備方法、基本文法、制御構文、配列、List、メソッド、オブジェクト指向、エラー対処、独学の進め方まで順番に説明します。
C#基礎を一度にすべて覚える必要はありません。大切なのは、全体像をつかみ、小さなプログラムを作りながら少しずつ理解していくことです。
1. C#基礎とは?初心者が最初に理解すべき全体像
C#基礎とは、C#でプログラムを書くために必要な最初の知識のことです。具体的には、変数、データ型、条件分岐、繰り返し処理、配列、メソッド、クラス、エラーの読み方などが含まれます。
初心者がC#を学ぶときは、いきなり大きなアプリを作ろうとするよりも、まずは「プログラムがどのように動くのか」を理解することが重要です。
たとえば、画面に文字を表示する、数字を計算する、入力された値によって処理を変える、同じ処理を何度も繰り返すといった基本操作を身につけることで、C#の考え方が少しずつわかってきます。
1-1. C#はどんなプログラミング言語か
C#は、Microsoftが開発したプログラミング言語です。読み方は「シーシャープ」です。
C#は、文法が比較的わかりやすく、型の考え方がしっかりしているため、初心者がプログラミングの基礎を学ぶのに向いています。また、オブジェクト指向という考え方を学びやすい言語でもあります。
C#の特徴は、次のような点です。
・文法が整理されていて読みやすい
・開発環境が充実している
・Web、アプリ、ゲームなど幅広く使える
・エラーを見つけやすい仕組みがある
・大規模なシステム開発にも向いている
C#基礎を学ぶことで、単にC#が書けるようになるだけでなく、他のプログラミング言語にも応用できる考え方が身につきます。
1-2. C#でできること|Web・アプリ・ゲーム開発
C#はさまざまな分野で使われています。代表的なものは、Webアプリ開発、Windowsアプリ開発、ゲーム開発、業務システム開発です。
Webアプリ開発では、ASP.NETという技術を使って、予約サイト、会員管理システム、問い合わせフォーム、社内管理ツールなどを作ることができます。
Windowsアプリ開発では、デスクトップ上で動くアプリを作れます。たとえば、在庫管理ソフト、メモアプリ、売上管理ツールなどです。
ゲーム開発では、UnityというゲームエンジンでC#がよく使われます。2Dゲーム、3Dゲーム、スマートフォン向けゲームなどを作ることができます。
つまり、C#基礎を学ぶと、将来的に進める開発分野の選択肢が広がります。
1-3. C#と.NETの関係をやさしく解説
C#を学ぶときに必ず出てくるのが「.NET」です。
C#はプログラミング言語で、.NETはC#で作ったプログラムを動かすための土台のようなものです。
たとえるなら、C#は文章を書くための言葉で、.NETはその文章を実際に動かすための環境です。C#で書いたコードは、.NETの仕組みを使って実行されます。
.NETには、プログラムを作るために便利な機能がたくさん用意されています。文字列を扱う機能、ファイルを読み書きする機能、日付を扱う機能、Webアプリを作る機能などです。
初心者のうちは、「C#は書くための言語」「.NETは動かすための環境」と理解しておけば十分です。
1-4. C#基礎を学ぶメリット
C#基礎を学ぶメリットは大きく分けて3つあります。
1つ目は、プログラミングの基本的な考え方が身につくことです。変数、条件分岐、繰り返し、メソッド、クラスなどは、多くの言語で共通する重要な考え方です。
2つ目は、実用的な開発につなげやすいことです。C#は業務システムやWebアプリ、ゲーム開発などで使われているため、基礎を学んだ後に実践へ進みやすいです。
3つ目は、開発環境が整っていることです。Visual StudioやVisual Studio Codeを使えば、コードの補完、エラー表示、デバッグなどをサポートしてくれます。
初心者にとって、学習しやすい環境があることは大きなメリットです。
1-5. C#が初心者にも学びやすい理由
C#が初心者にも学びやすい理由は、文法が比較的読みやすく、エラーの原因を見つけやすいからです。
たとえば、C#では変数に型を指定します。
C#int age = 20;
string name = "Taro";
このように「ageは整数」「nameは文字列」と明確に決めるため、間違いに気づきやすくなります。
また、Visual Studioを使うと、コードを書いている途中で候補を表示してくれたり、間違いがある場所を教えてくれたりします。初心者でも安心して学習を進めやすいのがC#の魅力です。
2. C#基礎を学ぶ前に準備する開発環境
C#基礎を学ぶには、まず開発環境を準備する必要があります。開発環境とは、プログラムを書いて実行するための道具のことです。
C#の場合、主に以下のものを用意します。
・パソコン
・コードを書くエディタまたは統合開発環境
・.NET SDK
・インターネット環境
最初は難しく感じるかもしれませんが、一度準備してしまえば、あとは繰り返し使えます。
2-1. C#学習に必要なもの
C#学習に必要なものは、基本的にパソコンと開発ツールです。
Windowsを使っている場合は、Visual Studioを使うと環境構築がしやすいです。C#開発に必要な機能をまとめてインストールできるため、初心者にも向いています。
Macを使っている場合は、Visual Studio Codeと.NET SDKを組み合わせて学習する方法が一般的です。
どちらの環境でも、C#基礎の学習は十分にできます。大切なのは、自分のパソコンで実際にコードを書いて動かすことです。
2-2. Visual StudioとVisual Studio Codeの違い
Visual StudioとVisual Studio Codeは名前が似ていますが、役割が少し違います。
Visual Studioは、C#開発に必要な機能がたくさん入った統合開発環境です。プロジェクト作成、コード補完、デバッグ、画面設計などをまとめて行えます。特にWindowsでC#を学ぶ初心者には使いやすいです。
一方、Visual Studio Codeは軽量なコードエディタです。必要な拡張機能を追加して使います。動作が軽く、Windows、Mac、Linuxで使えるため、シンプルに学習したい人に向いています。
初心者が迷った場合、WindowsならVisual Studio、MacならVisual Studio Codeから始めるとよいでしょう。
2-3. .NET SDKのインストール方法
C#のプログラムを作成して実行するには、.NET SDKが必要です。SDKとは、プログラム開発に必要な道具をまとめたものです。
.NET SDKをインストールすると、C#のコードをコンパイルしたり、実行したりできるようになります。
インストール後は、コマンドプロンプトやターミナルで次のコマンドを入力して確認できます。
Bashdotnet --version
バージョン番号が表示されれば、.NET SDKのインストールは成功です。
もし「dotnetが見つかりません」と表示される場合は、インストールが完了していないか、パスの設定が反映されていない可能性があります。その場合は、パソコンを再起動してからもう一度確認してみましょう。
2-4. Windows・Macでの環境構築の流れ
WindowsでC#基礎を学ぶ場合は、Visual Studioをインストールし、C#開発に必要なワークロードを選択します。たとえば、コンソールアプリやデスクトップアプリを作るための機能を追加します。
Macの場合は、.NET SDKをインストールし、Visual Studio CodeにC#用の拡張機能を追加します。その後、ターミナルでプロジェクトを作成して実行します。
基本的な流れは、次の通りです。
.NET SDKをインストールする
エディタまたは開発環境を用意する
C#プロジェクトを作成する
コードを書く
プログラムを実行する
最初の環境構築は少し手間がかかりますが、ここを乗り越えるとC#基礎の学習がスムーズになります。
2-5. 初めてのC#プログラムを実行する方法
初めてのC#プログラムでは、画面に文字を表示してみましょう。
ターミナルやコマンドプロンプトで、次のように入力します。
Bashdotnet new console -n HelloCSharp
cd HelloCSharp
dotnet run
作成されたプログラムには、次のようなコードが含まれています。
C#Console.WriteLine("Hello, World!");
このコードは、画面に「Hello, World!」と表示する命令です。
C#基礎の学習では、このように短いコードを書いて実行し、結果を確認することが大切です。自分で文字を変えてみると、コードと実行結果の関係が理解しやすくなります。
C#Console.WriteLine("C#の勉強を始めました!");
2-6. 環境構築でつまずきやすいポイント
C#の環境構築で初心者がつまずきやすいポイントはいくつかあります。
よくあるのは、.NET SDKをインストールしたのにdotnetコマンドが使えないケースです。この場合、インストール後にターミナルを開き直す、またはパソコンを再起動すると解決することがあります。
次に多いのは、Visual Studioで必要な機能を選択していないケースです。C#開発用のワークロードが入っていないと、プロジェクトを作成できない場合があります。
また、フォルダ名やファイル名に日本語やスペースが含まれていると、環境によってはトラブルの原因になることがあります。初心者のうちは、英数字だけのフォルダ名にしておくと安心です。
3. C#基礎文法|初心者が最初に覚える書き方
C#基礎文法では、プログラムの基本構造、変数、データ型、演算子、入力処理などを学びます。
最初は文法を丸暗記しようとせず、「何を書くと、どのように動くのか」を意識しましょう。短いコードを何度も書くことで、自然と書き方に慣れていきます。
3-1. C#プログラムの基本構造
C#のプログラムは、命令を上から順番に実行します。
現在のC#では、初心者向けに次のような短い書き方ができます。
C#Console.WriteLine("こんにちは");
Console.WriteLine("C#基礎を学習中です");
このプログラムを実行すると、上から順番に文字が表示されます。
より従来の形式で書くと、次のようになります。
C#using System;
class Program
{
static void Main()
{
Console.WriteLine("こんにちは");
}
}
最初は短い書き方から始めても問題ありません。学習が進んだら、classやMainメソッドの意味も理解していきましょう。
3-2. Mainメソッドとは
Mainメソッドは、C#プログラムの開始地点です。プログラムを実行すると、Mainメソッドの中に書かれた処理が実行されます。
C#class Program
{
static void Main()
{
Console.WriteLine("プログラム開始");
}
}
初心者のうちは、「Mainの中に書いた処理が実行される」と覚えておけば十分です。
ただし、最近のC#ではトップレベルステートメントという書き方により、Mainメソッドを明示的に書かなくてもプログラムを実行できます。
C#Console.WriteLine("Mainメソッドを書かなくても実行できます");
どちらの書き方でもC#の基礎学習はできますが、書籍や古い教材ではMainメソッドが出てくることが多いため、意味を知っておくと安心です。
3-3. コメントの書き方
コメントとは、プログラムの中に書くメモのことです。コメントは実行されません。
C#では、1行コメントと複数行コメントがあります。
C#// これは1行コメントです
Console.WriteLine("コメントの練習");
// ここから
// 複数行の説明を書くこともできます
複数行コメントは、次のように書きます。
C#/*
これは複数行コメントです。
処理の説明をまとめて書けます。
*/
Console.WriteLine("C#基礎");
コメントは、未来の自分や他の人がコードを読みやすくするために使います。ただし、書きすぎると逆に読みにくくなるため、「なぜその処理をしているのか」を補足する目的で使うとよいでしょう。
3-4. Console.WriteLineで文字を表示する
C#基礎で最初に覚える命令のひとつが、Console.WriteLineです。
C#Console.WriteLine("こんにちは");
これは、コンソール画面に文字を表示する命令です。
複数行表示したい場合は、次のように書きます。
C#Console.WriteLine("名前:田中");
Console.WriteLine("年齢:20");
Console.WriteLine("趣味:プログラミング");
Console.WriteLineは、文字だけでなく数値も表示できます。
C#Console.WriteLine(100);
Console.WriteLine(10 + 5);
実行すると、計算結果も表示されます。
3-5. 変数とデータ型の基本
変数とは、値を入れておく箱のようなものです。
C#では、変数を使うときにデータ型を指定します。
C#int age = 20;
string name = "佐藤";
double height = 170.5;
bool isStudent = true;
代表的なデータ型は、次の通りです。
intは整数を扱います。
C#int score = 80;
doubleは小数を扱います。
C#double price = 120.5;
stringは文字列を扱います。
C#string message = "こんにちは";
boolは真偽値を扱います。
C#bool isLogin = false;
C#基礎では、まずint、double、string、boolを覚えておきましょう。
3-6. 文字列・数値・真偽値の扱い方
文字列は、ダブルクォーテーションで囲みます。
C#string name = "山田";
Console.WriteLine(name);
数値は、そのまま書きます。
C#int x = 10;
int y = 20;
Console.WriteLine(x + y);
真偽値は、trueまたはfalseを使います。
C#bool isAdult = true;
Console.WriteLine(isAdult);
文字列と変数を組み合わせて表示したい場合は、文字列補間を使うと便利です。
C#string name = "鈴木";
int age = 25;
Console.WriteLine($"名前は{name}です。年齢は{age}歳です。");
$"..."の中で{変数名}を書くと、変数の値を文字列の中に埋め込めます。
3-7. 演算子の使い方
演算子とは、計算や比較に使う記号のことです。
算術演算子には、次のようなものがあります。
C#int a = 10;
int b = 3;
Console.WriteLine(a + b); // 足し算
Console.WriteLine(a - b); // 引き算
Console.WriteLine(a * b); // 掛け算
Console.WriteLine(a / b); // 割り算
Console.WriteLine(a % b); // 余り
比較演算子は、条件分岐でよく使います。
C#int score = 80;
Console.WriteLine(score >= 60); // true
Console.WriteLine(score == 100); // false
Console.WriteLine(score != 0); // true
=は代入、==は比較です。初心者が間違えやすいポイントなので注意しましょう。
3-8. 入力処理の基本
C#では、Console.ReadLineを使ってキーボードから入力を受け取れます。
C#Console.WriteLine("名前を入力してください");
string name = Console.ReadLine();
Console.WriteLine($"こんにちは、{name}さん");
Console.ReadLineで受け取った値は、基本的に文字列です。数値として使いたい場合は、変換が必要です。
C#Console.WriteLine("年齢を入力してください");
string input = Console.ReadLine();
int age = int.Parse(input);
Console.WriteLine($"あなたは{age}歳です");
ただし、数字以外を入力するとエラーになります。慣れてきたら、int.TryParseを使って安全に変換する方法も学びましょう。
C#Console.WriteLine("数字を入力してください");
string input = Console.ReadLine();
if (int.TryParse(input, out int number))
{
Console.WriteLine($"入力された数字は{number}です");
}
else
{
Console.WriteLine("数字ではありません");
}
4. C#の制御構文を基礎から理解する
制御構文とは、プログラムの流れを変えるための書き方です。
通常、プログラムは上から順番に実行されます。しかし、条件によって処理を変えたり、同じ処理を繰り返したりしたい場面があります。
そこで使うのが、if文、switch文、for文、while文などです。
4-1. if文で条件分岐を書く
if文は、条件によって処理を分けるために使います。
C#int score = 80;
if (score >= 60)
{
Console.WriteLine("合格です");
}
条件が成り立つ場合だけ、{ }の中の処理が実行されます。
条件が成り立たない場合の処理を書きたいときは、elseを使います。
C#int score = 45;
if (score >= 60)
{
Console.WriteLine("合格です");
}
else
{
Console.WriteLine("不合格です");
}
複数の条件を分けたい場合は、else ifを使います。
C#int score = 85;
if (score >= 90)
{
Console.WriteLine("評価はAです");
}
else if (score >= 70)
{
Console.WriteLine("評価はBです");
}
else if (score >= 60)
{
Console.WriteLine("評価はCです");
}
else
{
Console.WriteLine("再試験です");
}
4-2. switch文の使い方
switch文は、値によって処理を分けたいときに使います。
C#int day = 3;
switch (day)
{
case 1:
Console.WriteLine("月曜日");
break;
case 2:
Console.WriteLine("火曜日");
break;
case 3:
Console.WriteLine("水曜日");
break;
default:
Console.WriteLine("不明な曜日");
break;
}
caseには比較したい値を書きます。どのcaseにも当てはまらない場合は、defaultが実行されます。
switch文は、選択肢が多いときに読みやすく書けます。たとえば、メニュー番号によって処理を分ける場合に便利です。
C#Console.WriteLine("1: 登録");
Console.WriteLine("2: 削除");
Console.WriteLine("3: 終了");
string menu = Console.ReadLine();
switch (menu)
{
case "1":
Console.WriteLine("登録します");
break;
case "2":
Console.WriteLine("削除します");
break;
case "3":
Console.WriteLine("終了します");
break;
default:
Console.WriteLine("正しい番号を入力してください");
break;
}
4-3. for文で繰り返し処理を書く
for文は、決まった回数だけ処理を繰り返したいときに使います。
C#for (int i = 0; i < 5; i++)
{
Console.WriteLine("こんにちは");
}
このコードは、「こんにちは」を5回表示します。
iは繰り返しの回数を管理する変数です。最初は0から始まり、1回処理が終わるごとにi++で1ずつ増えます。i < 5の間だけ繰り返します。
数字を表示することもできます。
C#for (int i = 1; i <= 10; i++)
{
Console.WriteLine(i);
}
このコードは、1から10までの数字を表示します。
4-4. while文とdo while文の違い
while文は、条件が成り立つ間、処理を繰り返します。
C#int count = 0;
while (count < 3)
{
Console.WriteLine(count);
count++;
}
while文は、最初に条件を確認します。条件が最初から成り立たない場合、処理は一度も実行されません。
一方、do while文は、処理を実行した後に条件を確認します。そのため、最低1回は必ず実行されます。
C#int count = 0;
do
{
Console.WriteLine(count);
count++;
}
while (count < 3);
初心者のうちは、回数が決まっている繰り返しはfor文、条件によって続ける処理はwhile文と考えるとわかりやすいです。
4-5. breakとcontinueの使い方
breakは、繰り返し処理を途中で終了するときに使います。
C#for (int i = 1; i <= 10; i++)
{
if (i == 5)
{
break;
}
Console.WriteLine(i);
}
このコードは、iが5になった時点で繰り返しを終了します。
continueは、その回の処理だけをスキップして、次の繰り返しに進みます。
C#for (int i = 1; i <= 5; i++)
{
if (i == 3)
{
continue;
}
Console.WriteLine(i);
}
このコードでは、3だけ表示されません。
breakは繰り返し全体を止める、continueは今の回だけ飛ばす、と覚えましょう。
4-6. 制御構文でよくある初心者のミス
C#の制御構文で初心者がよく間違えるのは、条件式の書き方です。
たとえば、比較のつもりで=を使ってしまうミスがあります。
C#// 間違い
// if (score = 60)
比較するときは、==を使います。
C#if (score == 60)
{
Console.WriteLine("60点です");
}
また、{ }の対応がずれるミスもよくあります。
C#if (score >= 60)
{
Console.WriteLine("合格");
}
else
{
Console.WriteLine("不合格");
}
コードが長くなるほど、どこからどこまでがif文なのか見失いやすくなります。インデントを整えて、見やすく書くことが大切です。
5. C#基礎で重要な配列・リスト・メソッド
C#基礎を学ぶうえで、配列、List、メソッドはとても重要です。
変数は1つの値を入れる箱ですが、配列やListを使うと複数の値をまとめて扱えます。また、メソッドを使うと処理をひとまとまりにでき、コードを読みやすく整理できます。
5-1. 配列の基本と使い方
配列は、同じ型のデータを複数まとめて管理する仕組みです。
C#string[] names = { "田中", "佐藤", "鈴木" };
Console.WriteLine(names[0]);
Console.WriteLine(names[1]);
Console.WriteLine(names[2]);
配列の番号は0から始まります。names[0]は最初の要素、names[1]は2番目の要素です。
配列とfor文を組み合わせると、すべての要素を順番に処理できます。
C#string[] names = { "田中", "佐藤", "鈴木" };
for (int i = 0; i < names.Length; i++)
{
Console.WriteLine(names[i]);
}
Lengthは、配列の要素数を表します。
5-2. Listの基本と配列との違い
Listは、配列と同じように複数のデータを管理できますが、後から要素を追加したり削除したりしやすいのが特徴です。
C#List<string> names = new List<string>();
names.Add("田中");
names.Add("佐藤");
names.Add("鈴木");
Console.WriteLine(names[0]);
Listを使う場合は、次のようにusingを書くことがあります。
C#using System.Collections.Generic;
配列は要素数が固定されているのに対し、Listは要素数を変えられます。
C#List<int> scores = new List<int>();
scores.Add(80);
scores.Add(90);
scores.Add(75);
scores.Remove(90);
foreach (int score in scores)
{
Console.WriteLine(score);
}
初心者のうちは、データの数が決まっているなら配列、後から増減するならListと考えるとよいでしょう。
5-3. メソッドとは何か
メソッドとは、処理をひとまとまりにしたものです。
同じ処理を何度も書く代わりに、メソッドとしてまとめておくと、必要なときに呼び出せます。
C#static void SayHello()
{
Console.WriteLine("こんにちは");
}
SayHello();
SayHello();
SayHelloというメソッドを作り、それを2回呼び出しています。
メソッドを使うと、コードの重複を減らせます。また、処理ごとに名前をつけられるため、プログラムの意味がわかりやすくなります。
5-4. 引数と戻り値の考え方
引数とは、メソッドに渡す値のことです。
C#static void SayHello(string name)
{
Console.WriteLine($"こんにちは、{name}さん");
}
SayHello("田中");
SayHello("佐藤");
この例では、nameが引数です。呼び出すときに渡した値によって、表示内容が変わります。
戻り値とは、メソッドの処理結果として返す値です。
C#static int Add(int a, int b)
{
return a + b;
}
int result = Add(3, 5);
Console.WriteLine(result);
Addメソッドは、2つの数値を受け取り、足し算した結果を返します。
引数は「メソッドに入れる値」、戻り値は「メソッドから返ってくる値」と考えるとわかりやすいです。
5-5. メソッドを分けるメリット
メソッドを分けるメリットは、コードが読みやすくなることです。
すべての処理を1か所に書くと、プログラムが長くなり、どこで何をしているのかわかりにくくなります。
たとえば、次のように処理ごとにメソッドを分けると、見通しがよくなります。
C#static void ShowMenu()
{
Console.WriteLine("1: 登録");
Console.WriteLine("2: 削除");
Console.WriteLine("3: 終了");
}
static void Register()
{
Console.WriteLine("登録処理を行います");
}
ShowMenu();
Register();
メソッド名を見るだけで、何をする処理なのかがわかります。
C#基礎の段階では、完璧に設計しようとする必要はありません。「同じ処理が何度も出てきたらメソッドにする」くらいの意識で十分です。
5-6. 小さなプログラムで基礎を練習する
配列、List、メソッドを練習するには、小さなプログラムを作るのがおすすめです。
たとえば、点数の平均を計算するプログラムです。
C#static double CalculateAverage(List<int> scores)
{
int total = 0;
foreach (int score in scores)
{
total += score;
}
return (double)total / scores.Count;
}
List<int> scores = new List<int> { 80, 90, 70 };
double average = CalculateAverage(scores);
Console.WriteLine($"平均点は{average}点です");
このプログラムでは、Listで複数の点数を管理し、メソッドで平均点を計算しています。
C#基礎を身につけるには、このような短いプログラムを自分で書いて、少しずつ改造していくことが効果的です。
6. C#のオブジェクト指向の基礎
C#を学ぶうえで避けて通れないのが、オブジェクト指向です。
オブジェクト指向は、初心者がつまずきやすい分野ですが、最初から難しく考える必要はありません。まずは、クラスという設計図からインスタンスという実物を作る考え方を理解しましょう。
6-1. オブジェクト指向とは
オブジェクト指向とは、データと処理をひとまとめにして扱う考え方です。
たとえば、「人」をプログラムで表したい場合、名前、年齢、あいさつする処理などをまとめて管理できます。
C#class Person
{
public string Name { get; set; }
public int Age { get; set; }
public void SayHello()
{
Console.WriteLine($"こんにちは、私は{Name}です");
}
}
このように、関連する情報と処理をまとめることで、プログラムを整理しやすくなります。
6-2. クラスとインスタンスの違い
クラスは設計図、インスタンスは設計図から作られた実物です。
C#class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
このPersonがクラスです。
実際に使うには、次のようにインスタンスを作ります。
C#Person person = new Person();
person.Name = "田中";
person.Age = 20;
Console.WriteLine(person.Name);
Console.WriteLine(person.Age);
new Person()によって、Personクラスからインスタンスを作っています。
初心者のうちは、「クラスは型を自分で作るもの」「インスタンスは実際に使うデータ」と考えるとわかりやすいです。
6-3. フィールド・プロパティ・メソッド
クラスの中には、フィールド、プロパティ、メソッドを書くことができます。
フィールドは、クラスが持つデータです。
C#class Person
{
private string name;
}
プロパティは、外部から値を読み書きするための仕組みです。
C#class Person
{
public string Name { get; set; }
}
メソッドは、クラスが持つ処理です。
C#class Person
{
public string Name { get; set; }
public void SayHello()
{
Console.WriteLine($"こんにちは、{Name}です");
}
}
C#では、データはプロパティで管理することが多いです。初心者のうちは、public string Name { get; set; }のような形に慣れておきましょう。
6-4. コンストラクタの基本
コンストラクタは、インスタンスを作るときに自動で呼び出される特別なメソッドです。
C#class Person
{
public string Name { get; set; }
public int Age { get; set; }
public Person(string name, int age)
{
Name = name;
Age = age;
}
}
このクラスを使うときは、次のように書きます。
C#Person person = new Person("田中", 20);
Console.WriteLine(person.Name);
Console.WriteLine(person.Age);
コンストラクタを使うと、インスタンスを作ると同時に初期値を設定できます。
6-5. カプセル化とは
カプセル化とは、データを外部から直接変更されないように守り、必要な操作だけを公開する考え方です。
たとえば、年齢にマイナスの値を入れられると困ります。
C#class Person
{
private int age;
public void SetAge(int value)
{
if (value >= 0)
{
age = value;
}
}
public int GetAge()
{
return age;
}
}
このようにすると、年齢を設定するときにチェックを入れられます。
C#ではプロパティを使って、より簡潔に書くこともできます。カプセル化は、プログラムを安全に保つための大切な考え方です。
6-6. 継承とポリモーフィズムの基礎
継承とは、既存のクラスの特徴を引き継いで、新しいクラスを作る仕組みです。
C#class Animal
{
public void Eat()
{
Console.WriteLine("食べます");
}
}
class Dog : Animal
{
public void Bark()
{
Console.WriteLine("ワン");
}
}
DogクラスはAnimalクラスを継承しているため、Eatメソッドを使えます。
C#Dog dog = new Dog();
dog.Eat();
dog.Bark();
ポリモーフィズムは、同じ呼び出し方でも、実際のオブジェクトによって動作を変えられる仕組みです。
C#class Animal
{
public virtual void Speak()
{
Console.WriteLine("鳴きます");
}
}
class Dog : Animal
{
public override void Speak()
{
Console.WriteLine("ワン");
}
}
class Cat : Animal
{
public override void Speak()
{
Console.WriteLine("ニャー");
}
}
最初は難しく感じるかもしれませんが、「共通部分を親クラスにまとめ、具体的な動きは子クラスで変える」と考えると理解しやすくなります。
6-7. 初心者がオブジェクト指向でつまずく理由
初心者がオブジェクト指向でつまずく理由は、目に見えにくい概念が多いからです。
変数やif文、for文は実行結果がわかりやすいですが、クラスやインスタンスは抽象的です。そのため、説明だけを読んでも理解しにくいことがあります。
オブジェクト指向を理解するには、身近なものに置き換えて考えるのがおすすめです。
たとえば、会員管理アプリなら「会員クラス」、商品管理アプリなら「商品クラス」、図書管理アプリなら「本クラス」を作ってみます。
実際にクラスを作り、インスタンスを作り、プロパティに値を入れて表示する。この流れを何度も練習すると、少しずつ理解できるようになります。
7. C#基礎学習で覚えておきたいエラーとデバッグ
C#基礎を学んでいると、必ずエラーに出会います。
エラーが出ると焦ってしまうかもしれませんが、エラーはプログラミング学習の一部です。むしろ、エラーを読んで直す力がつくと、成長が早くなります。
7-1. コンパイルエラーと実行時エラーの違い
C#のエラーは、大きく分けてコンパイルエラーと実行時エラーがあります。
コンパイルエラーは、プログラムを実行する前に見つかる文法上のエラーです。
たとえば、セミコロンを忘れるとエラーになります。
C#Console.WriteLine("こんにちは")
正しくは、次のように書きます。
C#Console.WriteLine("こんにちは");
実行時エラーは、プログラムの実行中に発生するエラーです。
C#int x = 10;
int y = 0;
Console.WriteLine(x / y);
0で割ることはできないため、実行時にエラーになります。
コンパイルエラーは文法の間違い、実行時エラーは動かしてみて初めてわかる問題と考えましょう。
7-2. よくあるエラーの原因と対処法
C#初心者によくあるエラーには、次のようなものがあります。
セミコロン忘れは非常に多いミスです。
C#Console.WriteLine("Hello")
C#では多くの命令の最後に;が必要です。
C#Console.WriteLine("Hello");
変数名の間違いもよくあります。
C#int score = 80;
Console.WriteLine(scroe);
scoreと書くべきところをscroeと書いているためエラーになります。
型の不一致も初心者がつまずきやすいポイントです。
C#int age = "20";
intには整数を入れる必要があります。文字列を入れたい場合はstringを使います。
C#string age = "20";
数値として扱いたい場合は、変換が必要です。
C#int age = int.Parse("20");
7-3. デバッグとは何か
デバッグとは、プログラムの間違いを見つけて修正する作業です。
プログラムが思った通りに動かないとき、原因を探す必要があります。そのときに役立つのがデバッグです。
初心者のうちは、Console.WriteLineを使って変数の中身を確認するだけでも十分なデバッグになります。
C#int total = 0;
for (int i = 1; i <= 5; i++)
{
total += i;
Console.WriteLine($"i={i}, total={total}");
}
このように途中の値を表示すると、プログラムがどのように動いているか確認できます。
7-4. ブレークポイントの使い方
ブレークポイントとは、プログラムを途中で一時停止するための目印です。
Visual StudioやVisual Studio Codeでは、コードの左側をクリックするとブレークポイントを設定できます。プログラムをデバッグ実行すると、その行で処理が止まり、変数の中身を確認できます。
ブレークポイントを使うと、次のような確認ができます。
・変数にどんな値が入っているか
・if文のどちらの処理に進んだか
・for文が何回繰り返されたか
・メソッドが正しく呼び出されているか
C#基礎の段階では、エラーが出たときだけでなく、プログラムの動きを理解するためにもデバッグを使うと効果的です。
7-5. エラーメッセージの読み方
エラーメッセージは難しく見えますが、重要な情報が含まれています。
特に見るべきポイントは、次の3つです。
・どのファイルでエラーが起きているか
・何行目でエラーが起きているか
・どのような原因なのか
英語のメッセージでも、単語を拾えば原因がわかることがあります。
たとえば、; expectedと表示された場合は、セミコロンが必要という意味です。
The name 'xxx' does not existと表示された場合は、指定した名前の変数やメソッドが見つからないという意味です。
エラーメッセージを怖がらず、まずは行番号を確認する習慣をつけましょう。
7-6. 自力で解決するための調べ方
エラーを自力で解決するには、エラーメッセージをそのまま検索するのが効果的です。
ただし、長いエラー文をすべてコピーするより、重要そうな部分だけを検索すると見つかりやすくなります。
また、日本語の記事だけでなく、公式ドキュメントや英語の情報も参考になります。英語が苦手でも、コード例を見るだけでヒントになることがあります。
調べるときは、次のように検索するとよいでしょう。
・C# エラー文
・C# int Parse 使い方
・C# List Add 使い方
・C# Console.ReadLine 数値 変換
C#基礎を学ぶ過程では、すべてを暗記する必要はありません。わからないことを調べて解決する力も、プログラミングに必要なスキルです。
8. C#基礎を効率よく独学する学び方
C#基礎は独学でも十分に学べます。ただし、学習順序を間違えると、途中で挫折しやすくなります。
大切なのは、基礎文法を学びながら、必ず手を動かして小さなプログラムを作ることです。
8-1. 初心者におすすめの学習順序
初心者におすすめのC#学習順序は、次の通りです。
まずは、環境構築をして、Console.WriteLineで文字を表示します。次に、変数とデータ型を学び、数値計算や文字列表示を練習します。
その後、if文、switch文、for文、while文を学びます。ここまで理解できると、簡単な判定プログラムや集計プログラムが作れるようになります。
次に、配列、List、メソッドを学びます。複数のデータを扱い、処理を分けられるようになると、プログラムらしい構成が見えてきます。
最後に、クラスやインスタンスなどのオブジェクト指向に進むとよいでしょう。
最初からオブジェクト指向を完璧に理解しようとすると難しいため、基礎文法に慣れてから学ぶのがおすすめです。
8-2. 本・動画・学習サイトの使い分け
C#基礎を独学する場合、本、動画、学習サイトをうまく使い分けると効果的です。
本は、体系的に学びたい人に向いています。基礎から順番に整理されているため、抜け漏れなく学習できます。
動画は、実際にコードを書く流れを見ながら学べる点が魅力です。環境構築やデバッグ操作など、画面の動きを見たほうがわかりやすい内容に向いています。
学習サイトは、短時間で文法を確認したり、練習問題に取り組んだりするのに便利です。
おすすめは、最初に入門書や動画で全体像をつかみ、その後に手を動かしてコードを書き、わからない部分を学習サイトや公式ドキュメントで補う方法です。
8-3. 写経だけで終わらせない練習方法
初心者は、教材のコードをそのまま写して学ぶことがあります。これは「写経」と呼ばれます。
写経は文法に慣れるためには有効ですが、それだけでは自分でコードを書けるようになりにくいです。
写経した後は、必ず少し変更してみましょう。
たとえば、次のような変更です。
・表示する文字を変える
・変数名を変える
・条件式を変える
・繰り返し回数を変える
・入力処理を追加する
教材のコードを改造すると、どの部分を変えると結果がどう変わるのかが理解できます。
C#基礎を身につけるには、「読む」「写す」「変える」「自分で作る」の順番で進めるのがおすすめです。
8-4. 小さなアプリを作って理解を深める
基礎文法を学んだら、小さなアプリを作ってみましょう。
最初から大きなアプリを作る必要はありません。コンソール上で動く簡単なもので十分です。
たとえば、次のようなアプリがおすすめです。
・電卓アプリ
・年齢判定アプリ
・点数管理アプリ
・ToDoリスト
・じゃんけんゲーム
・簡単な家計簿
小さなアプリを作ると、変数、条件分岐、繰り返し、List、メソッドを自然に使うことになります。文法を単体で覚えるより、実際の使い方が理解しやすくなります。
8-5. C#基礎学習に必要な勉強時間の目安
C#基礎の学習時間は、プログラミング経験や学習ペースによって変わります。
完全な初心者の場合、基本文法を一通り理解するには、30〜50時間程度を目安にするとよいでしょう。
簡単なコンソールアプリを自分で作れるようになるには、さらに50〜100時間ほど練習すると理解が深まりやすいです。
ただし、時間だけを目標にするよりも、「何ができるようになったか」を基準にすることが大切です。
たとえば、次のような状態を目指しましょう。
・変数を使って値を管理できる
・if文で条件分岐を書ける
・for文で繰り返し処理を書ける
・Listで複数のデータを扱える
・メソッドで処理を分けられる
・簡単なクラスを作れる
8-6. 挫折しないための学習計画
C#基礎で挫折しないためには、学習範囲を小さく区切ることが重要です。
1日で多くを覚えようとすると、疲れてしまいます。最初は1日30分でもよいので、継続することを優先しましょう。
おすすめの学習計画は、次のような流れです。
1週目は、環境構築、文字表示、変数、データ型を学びます。
2週目は、if文、switch文、for文、while文を練習します。
3週目は、配列、List、メソッドを学びます。
4週目は、クラスとインスタンスの基本を学び、小さなアプリを作ります。
学習中にわからないことが出てきても、すぐに完璧に理解しようとしなくて大丈夫です。C#基礎は、何度も使ううちに自然と身についていきます。
9. C#基礎を身につける練習課題
C#基礎を理解するには、実際に課題を解くことが大切です。
ここでは、初心者向けの練習課題を紹介します。最初は答えを見ながらでも構いません。慣れてきたら、自分で考えてコードを書いてみましょう。
9-1. 文字表示と計算の練習
最初の練習は、文字表示と計算です。
C#Console.WriteLine("C#基礎の練習");
Console.WriteLine(10 + 5);
Console.WriteLine(10 - 5);
Console.WriteLine(10 * 5);
Console.WriteLine(10 / 5);
次に、変数を使って計算してみましょう。
C#int price = 1200;
int count = 3;
int total = price * count;
Console.WriteLine($"合計金額は{total}円です");
この練習では、変数、数値計算、文字列補間を確認できます。
9-2. 条件分岐を使った判定プログラム
次は、if文を使った判定プログラムです。
C#Console.WriteLine("点数を入力してください");
int score = int.Parse(Console.ReadLine());
if (score >= 80)
{
Console.WriteLine("よくできました");
}
else if (score >= 60)
{
Console.WriteLine("合格です");
}
else
{
Console.WriteLine("もう少し頑張りましょう");
}
このプログラムでは、入力された点数によって表示内容が変わります。
慣れてきたら、年齢判定、偶数奇数判定、ログイン判定などに応用してみましょう。
9-3. 繰り返し処理を使った集計プログラム
繰り返し処理を使うと、複数の値をまとめて処理できます。
C#int total = 0;
for (int i = 1; i <= 5; i++)
{
Console.WriteLine($"{i}人目の点数を入力してください");
int score = int.Parse(Console.ReadLine());
total += score;
}
double average = total / 5.0;
Console.WriteLine($"合計点は{total}点です");
Console.WriteLine($"平均点は{average}点です");
このプログラムでは、5人分の点数を入力し、合計と平均を計算します。
for文、入力処理、変数、計算を組み合わせた良い練習になります。
9-4. 配列・Listを使ったデータ管理
配列やListを使うと、複数のデータをまとめて扱えます。
C#List<string> tasks = new List<string>();
tasks.Add("C#基礎を学ぶ");
tasks.Add("if文を練習する");
tasks.Add("Listを理解する");
foreach (string task in tasks)
{
Console.WriteLine(task);
}
さらに、ユーザーが入力したタスクを追加するように改造してみましょう。
C#List<string> tasks = new List<string>();
for (int i = 0; i < 3; i++)
{
Console.WriteLine("タスクを入力してください");
string task = Console.ReadLine();
tasks.Add(task);
}
Console.WriteLine("登録されたタスク一覧");
foreach (string task in tasks)
{
Console.WriteLine(task);
}
このようなプログラムを作ると、簡単なToDoアプリの基礎になります。
9-5. クラスを使った簡単な管理アプリ
クラスを使うと、データをわかりやすく管理できます。
たとえば、商品管理アプリの基本を作ってみましょう。
C#class Product
{
public string Name { get; set; }
public int Price { get; set; }
public Product(string name, int price)
{
Name = name;
Price = price;
}
public void ShowInfo()
{
Console.WriteLine($"商品名:{Name}、価格:{Price}円");
}
}
使う側のコードは、次のようになります。
C#Product product1 = new Product("ノート", 150);
Product product2 = new Product("ペン", 100);
product1.ShowInfo();
product2.ShowInfo();
この練習では、クラス、プロパティ、コンストラクタ、メソッドをまとめて確認できます。
9-6. 初心者向けミニアプリのアイデア
C#基礎を練習するなら、次のようなミニアプリがおすすめです。
まずは、数当てゲームです。ランダムな数字を用意し、ユーザーが入力した数字と比較します。if文、while文、入力処理の練習になります。
次に、ToDoリストです。タスクを追加して一覧表示するだけでも、Listや繰り返し処理の練習になります。
簡単な家計簿もおすすめです。収入や支出を入力し、合計金額を表示します。数値計算、List、メソッドの練習になります。
また、図書管理アプリを作ると、クラスの理解が深まります。本のタイトル、著者名、貸出状態などをプロパティで管理できます。
小さなアプリでも、自分で完成させる経験は大きな自信になります。
10. C#基礎を学んだ後の次のステップ
C#基礎を一通り学んだら、次は目的に合わせて学習を進めましょう。
C#は幅広い分野で使えるため、Webアプリ、ゲーム、Windowsアプリ、データベース連携など、さまざまな方向に進めます。
10-1. ASP.NETでWebアプリ開発に進む
Webアプリを作りたい場合は、ASP.NETを学ぶのがおすすめです。
ASP.NETを使うと、WebサイトやWebアプリをC#で開発できます。ログイン機能、データ登録、検索機能、管理画面など、実用的なアプリを作れるようになります。
C#基礎を学んだ後にASP.NETへ進むと、変数、if文、List、クラスなどの知識がそのまま役立ちます。
最初は、簡単な問い合わせフォームやメモアプリを作るところから始めるとよいでしょう。
10-2. Unityでゲーム開発に進む
ゲームを作りたい場合は、Unityを学ぶのがおすすめです。
Unityでは、キャラクターの動き、当たり判定、スコア管理、ゲーム画面の制御などにC#を使います。
C#基礎で学んだ変数、条件分岐、メソッド、クラスは、Unityでも頻繁に使います。
たとえば、プレイヤーの体力を管理する、敵に当たったらダメージを受ける、スコアを加算する、といった処理はC#で書きます。
ゲーム開発に興味がある人は、C#基礎を学んだ後に、簡単な2Dゲームから挑戦してみましょう。
10-3. Windowsアプリ開発に進む
Windows上で動くデスクトップアプリを作りたい場合は、Windowsアプリ開発に進みましょう。
たとえば、メモアプリ、在庫管理アプリ、売上管理ツール、ファイル整理ツールなどを作れます。
C#はWindowsアプリ開発との相性がよく、業務システムでもよく使われます。
最初は、ボタンをクリックすると文字が表示されるアプリや、入力された内容を一覧に追加するアプリなど、シンプルなものから始めると理解しやすいです。
10-4. データベース連携を学ぶ
実用的なアプリを作るには、データベース連携も重要です。
データベースを使うと、ユーザー情報、商品情報、注文履歴、タスク一覧などを保存できます。
C#では、SQL ServerやSQLiteなどのデータベースと連携できます。
C#基礎を学んだ段階では、まず「データを保存する場所がデータベース」と理解しておけば十分です。その後、SQLの基本や、C#からデータベースを操作する方法を学びましょう。
10-5. Git・GitHubを使ってコードを管理する
C#基礎を学んだ後は、GitとGitHubも学んでおくとよいでしょう。
Gitは、コードの変更履歴を管理するためのツールです。GitHubは、コードをオンラインで保存・共有できるサービスです。
Gitを使うと、変更前の状態に戻したり、複数のバージョンを管理したりできます。
初心者のうちは、次の基本操作から覚えましょう。
・リポジトリを作成する
・変更を記録する
・GitHubにアップロードする
・過去の変更を確認する
ポートフォリオを作る場合にも、GitHubは役立ちます。
10-6. ポートフォリオ作成につなげる
C#基礎を学んだら、ポートフォリオ作成につなげましょう。
ポートフォリオとは、自分が作った作品をまとめたものです。就職、転職、副業、案件獲得を目指す場合、自分のスキルを示す材料になります。
最初は大きなアプリでなくても構いません。
たとえば、次のような作品でも十分です。
・ToDo管理アプリ
・家計簿アプリ
・商品管理アプリ
・読書記録アプリ
・簡単なゲーム
・Web問い合わせフォーム
大切なのは、自分で考えて作り、READMEに使い方や工夫した点を書くことです。C#基礎を学んだ成果を形にすることで、次の学習にもつながります。
11. C#基礎に関するよくある質問
ここでは、C#基礎を学ぶ初心者がよく疑問に思うことを解説します。
11-1. C#はプログラミング初心者でも学べる?
C#はプログラミング初心者でも学べます。
型の考え方やオブジェクト指向など、最初は難しく感じる部分もありますが、開発環境が充実しており、エラーも比較的見つけやすいため、初心者にも向いています。
大切なのは、最初から完璧を目指さないことです。まずは文字表示、変数、if文、for文などのC#基礎から順番に学びましょう。
11-2. C#とJavaはどちらを学ぶべき?
C#とJavaは、どちらもオブジェクト指向の代表的な言語です。文法も似ている部分があります。
C#は、Windowsアプリ、ASP.NETによるWeb開発、Unityによるゲーム開発に興味がある人に向いています。
Javaは、業務システム、Android開発、サーバーサイド開発などでよく使われます。
どちらを選んでもプログラミングの基礎は学べます。ゲーム開発やMicrosoft系の開発に興味があるならC#、Javaを使う職場やAndroid開発に興味があるならJavaを選ぶとよいでしょう。
11-3. C#基礎の習得にどれくらい時間がかかる?
C#基礎の習得には、完全な初心者であれば1〜3か月程度を目安にするとよいでしょう。
毎日30分〜1時間ほど学習できれば、基本文法を一通り理解し、簡単なコンソールアプリを作れるようになります。
ただし、習得にかかる時間は人によって異なります。重要なのは、学習時間よりも実際にコードを書く量です。読むだけでなく、手を動かして練習しましょう。
11-4. C#学習に数学の知識は必要?
C#基礎を学ぶ段階では、高度な数学の知識は必要ありません。
足し算、引き算、掛け算、割り算、余りの計算がわかれば、基本的なプログラムは書けます。
ただし、ゲーム開発、画像処理、AI、データ分析などに進む場合は、数学の知識が役立つ場面があります。
まずは数学を心配するより、変数、条件分岐、繰り返し、メソッド、クラスといったC#基礎をしっかり身につけることを優先しましょう。
11-5. C#は独学だけで習得できる?
C#は独学でも習得できます。
本、動画、学習サイト、公式ドキュメントなど、学べる教材は多くあります。特にC#は利用者が多いため、エラーや疑問点を検索しやすいのもメリットです。
ただし、独学では「何をどの順番で学べばよいか」がわからなくなりがちです。そのため、最初は入門教材を1つ選び、最後まで進めることをおすすめします。
途中で教材を何度も変えるより、1つの教材をやり切り、その後に別の教材で復習するほうが理解しやすいです。
11-6. C#基礎の次に何を学べばよい?
C#基礎の次は、作りたいものに合わせて学ぶ内容を選びましょう。
Webアプリを作りたいならASP.NET、ゲームを作りたいならUnity、業務アプリを作りたいならWindowsアプリ開発やデータベース連携がおすすめです。
また、どの分野に進む場合でも、Git・GitHub、例外処理、ファイル操作、LINQ、非同期処理などは役立ちます。
まずはC#基礎で学んだ内容を使って、小さなアプリを完成させることが次のステップです。
まとめ
C#基礎は、初心者がプログラミングを学ぶうえでとても重要な土台です。
C#は、Webアプリ、Windowsアプリ、ゲーム開発、業務システムなど幅広い分野で使われており、基礎を身につけることで将来の選択肢が広がります。
最初に理解しておきたいのは、C#はプログラミング言語で、.NETはC#のプログラムを動かすための環境だということです。そのうえで、Visual StudioやVisual Studio Codeを使って開発環境を整え、実際にコードを書いていきましょう。
C#基礎で特に大切なのは、変数、データ型、条件分岐、繰り返し、配列、List、メソッド、クラスです。これらを一度で完璧に覚える必要はありません。短いプログラムを何度も作りながら、少しずつ理解を深めることが大切です。
また、エラーが出るのは自然なことです。エラーメッセージを読み、原因を調べ、修正する経験を重ねることで、プログラミング力は確実に伸びていきます。
C#基礎を学んだ後は、ASP.NETでWebアプリ開発に進む、Unityでゲーム開発に進む、Windowsアプリ開発やデータベース連携を学ぶなど、自分の目的に合わせてステップアップできます。
まずは小さなプログラムから始めて、C#で「自分で作れる」感覚を身につけていきましょう。

