C#の使い方を初心者向けに徹底解説|基本文法から実践的なコード例まで
はじめに
C#は、Windowsアプリ、Webアプリ、ゲーム、業務システムなど幅広い開発に使われているプログラミング言語です。文法が比較的読みやすく、開発環境も整っているため、初心者が最初に学ぶ言語としても人気があります。
この記事では、「C#の使い方を基礎から知りたい」「最初のプログラムを書いてみたい」「実践的なコード例を見ながら学びたい」という方向けに、C#の基本文法からオブジェクト指向、よく使う機能、学習ステップまでをわかりやすく解説します。
C#は最初こそ覚えることが多く感じられますが、基本の流れを理解すれば、少しずつ自分でプログラムを書けるようになります。まずは難しく考えすぎず、実際にコードを書きながらC#の使い方を身につけていきましょう。
1. C#の使い方を学ぶ前に知っておきたい基礎知識
1-1. C#とは?初心者にもわかる特徴とできること
C#は、Microsoftが開発したプログラミング言語です。読み方は「シーシャープ」です。
C#の大きな特徴は、文法が整理されていて読みやすく、さまざまな種類のアプリケーション開発に使えることです。たとえば、画面を持つWindowsアプリ、ブラウザで使うWebアプリ、Unityを使ったゲーム開発、サーバー側のシステム開発などに利用できます。
C#は「オブジェクト指向」という考え方を基本にした言語です。オブジェクト指向とは、データや処理をひとまとまりにして管理する考え方です。最初は難しく感じるかもしれませんが、プログラムが大きくなったときに整理しやすいというメリットがあります。
1-2. C#で作れるもの|Webアプリ・Windowsアプリ・ゲーム開発
C#で作れる代表的なものには、次のようなものがあります。
| 分野 | 例 |
|---|---|
| コンソールアプリ | 文字だけで動く学習用アプリ、簡単な計算ツール |
| Windowsアプリ | デスクトップ業務アプリ、在庫管理ソフト |
| Webアプリ | 会員サイト、予約システム、管理画面 |
| ゲーム | Unityを使った2D・3Dゲーム |
| スマホアプリ | .NET MAUIなどを使ったアプリ |
| API | Webサービスや外部連携用のシステム |
初心者が最初に取り組むなら、まずはコンソールアプリがおすすめです。画面設計を気にせず、C#の基本文法に集中できるからです。
1-3. C#と.NETの関係をわかりやすく解説
C#を学ぶときによく出てくる言葉に「.NET」があります。
C#はプログラミング言語で、.NETはC#で作ったプログラムを動かすための土台です。たとえるなら、C#が「文章を書くための言語」、.NETが「その文章を実行するための環境」のようなものです。
C#でプログラムを書く場合、多くの場面で.NETを使います。.NETには、文字列処理、ファイル操作、日付処理、Web開発、データベース接続など、便利な機能がたくさん用意されています。
つまり、C#の使い方を学ぶということは、C#の文法だけでなく、.NETが用意している機能の使い方も少しずつ覚えていくことになります。
1-4. C#が初心者にも学びやすい理由
C#が初心者にも学びやすい理由は、主に次の3つです。
1つ目は、文法が比較的わかりやすいことです。変数、条件分岐、繰り返し、メソッドなど、基本文法が整理されているため、段階的に学習できます。
2つ目は、開発環境が充実していることです。Visual StudioやVS Codeを使えば、コード補完、エラー表示、デバッグ機能などを活用しながら効率よく開発できます。
3つ目は、学習後に進める分野が広いことです。C#を学べば、Webアプリ、Windowsアプリ、ゲーム開発など、さまざまな方向へ進めます。
1-5. C#を学ぶ前に必要な前提知識
C#を学ぶ前に、特別な専門知識は必要ありません。ただし、次のような基本的な考え方を知っておくと理解しやすくなります。
プログラムは、コンピューターに対する命令の集まりです。上から順番に処理され、条件によって処理を分けたり、同じ処理を繰り返したりできます。
また、ファイルやフォルダの基本操作、キーボード入力、ソフトウェアのインストール方法などに慣れていると、開発環境の準備がスムーズです。
最初から完璧に理解する必要はありません。C#は、実際にコードを書きながら覚えるのが一番です。
2. C#を使うための開発環境を準備しよう
2-1. C#を書くために必要なツール
C#を書くためには、主に次のツールが必要です。
| ツール | 役割 |
|---|---|
| エディタまたはIDE | C#のコードを書く |
| .NET SDK | C#のプログラムを作成・実行する |
| ターミナル | コマンドを入力して実行する |
| Git | ソースコードの変更履歴を管理する |
初心者には、Visual Studioを使う方法が特におすすめです。C#開発に必要な機能がまとまっており、画面操作でプロジェクト作成や実行ができます。
一方、軽量な環境で学びたい場合は、VS Codeと.NET SDKを組み合わせる方法もあります。
2-2. Visual Studioを使ったC#開発の始め方
Visual Studioは、C#開発に向いている統合開発環境です。コードを書く、実行する、エラーを確認する、デバッグする、といった作業を1つの画面で行えます。
Visual StudioでC#を始める基本的な流れは次のとおりです。
Visual Studioをインストールする
インストール時に「.NETデスクトップ開発」など必要なワークロードを選ぶ
Visual Studioを起動する
「新しいプロジェクトの作成」を選ぶ
「コンソール アプリ」を選ぶ
プロジェクト名を入力して作成する
実行ボタンを押してプログラムを動かす
初心者のうちは、まず「コンソール アプリ」から始めるとよいでしょう。
2-3. VS CodeでC#を書く場合の準備
VS Codeは軽量なコードエディタです。C#を書く場合は、VS Code本体だけでなく、.NET SDKとC#関連の拡張機能を入れる必要があります。
VS CodeでC#を使う基本的な準備は次のとおりです。
VS Codeをインストールする
.NET SDKをインストールする
C#関連の拡張機能を追加する
ターミナルでプロジェクトを作成する
dotnet runで実行する
たとえば、ターミナルで次のように入力すると、コンソールアプリを作成できます。
Bashdotnet new console -n MyFirstApp
cd MyFirstApp
dotnet run
VS Codeはシンプルですが、最初はコマンド操作が必要になります。コマンドに慣れたい人には向いています。
2-4. .NET SDKのインストールと確認方法
.NET SDKは、C#のプログラムを作成・ビルド・実行するために必要なツールです。
インストールできているか確認するには、ターミナルやコマンドプロンプトで次のコマンドを入力します。
Bashdotnet --version
バージョン番号が表示されれば、.NET SDKは正しくインストールされています。
また、次のコマンドで新しいプロジェクトを作成できます。
Bashdotnet new console -n SampleApp
作成したプロジェクトのフォルダへ移動して、次のコマンドを実行します。
Bashdotnet run
これでC#プログラムを実行できます。
2-5. 初心者におすすめの開発環境はどれ?
初心者に最もおすすめなのはVisual Studioです。理由は、C#開発に必要な機能が最初からそろっているからです。
特に、以下のような人にはVisual Studioが向いています。
| 向いている人 | おすすめ環境 |
|---|---|
| 画面操作で始めたい | Visual Studio |
| Windowsアプリも作りたい | Visual Studio |
| 軽いエディタが好き | VS Code |
| コマンド操作に慣れたい | VS Code + .NET SDK |
| Unityでゲーム開発したい | Unity + Visual StudioまたはVS Code |
最初はVisual StudioでC#の基本を学び、慣れてきたらVS CodeやUnityなどに広げていく流れでも問題ありません。
3. C#の基本的な使い方|最初のプログラムを書いてみよう
3-1. C#プロジェクトを新規作成する手順
C#では、1つのアプリケーションを作る単位を「プロジェクト」と呼びます。
Visual Studioでコンソールアプリを作る場合は、次の手順です。
Visual Studioを起動する
「新しいプロジェクトの作成」を選ぶ
「コンソール アプリ」を選ぶ
プロジェクト名を入力する
保存場所を選ぶ
作成ボタンを押す
VS Codeやターミナルを使う場合は、次のコマンドで作成できます。
Bashdotnet new console -n HelloApp
cd HelloApp
dotnet run
プロジェクトを作成すると、C#のソースコードファイルや設定ファイルが自動で作られます。
3-2. Hello Worldを表示するサンプルコード
C#で最初によく書くプログラムが「Hello World」です。
C#Console.WriteLine("Hello World");
このコードを実行すると、画面に次のように表示されます。
Hello World
Console.WriteLineは、コンソール画面に文字を表示するための命令です。C#の使い方を学ぶときは、このような小さなコードから始めると理解しやすくなります。
従来の書き方では、次のようにclassやMainメソッドを書きます。
C#using System;
namespace HelloApp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World");
}
}
}
最近のC#では、学習しやすいように短い書き方も使えます。初心者はまず短い書き方で慣れ、あとから基本構造を理解していくとよいでしょう。
3-3. C#プログラムの基本構造
C#の基本的なプログラムは、次のような構造になっています。
C#using System;
namespace SampleApp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("こんにちは");
}
}
}
それぞれの役割を簡単に整理すると、次のとおりです。
| 要素 | 役割 |
|---|---|
| using | 外部の機能を使うための宣言 |
| namespace | クラスを整理するための名前空間 |
| class | データや処理をまとめる単位 |
| Main | プログラムの開始地点 |
| Console.WriteLine | 画面に文字を表示する命令 |
最初はすべてを暗記しなくても大丈夫です。「C#のプログラムはMainから動き始める」と覚えておきましょう。
3-4. using・namespace・class・Mainメソッドの意味
usingは、よく使う機能を簡単に呼び出すための宣言です。
C#using System;
namespaceは、クラス名の重複を避けたり、コードを整理したりするために使います。
C#namespace MyApp
{
}
classは、C#で処理やデータをまとめる基本単位です。
C#class Program
{
}
Mainメソッドは、C#プログラムの実行開始地点です。
C#static void Main(string[] args)
{
Console.WriteLine("開始");
}
初心者のうちは、これらを細かく理解しようとしすぎず、「プログラムを動かすための基本の形」として覚えるとよいでしょう。
3-5. C#コードを実行・停止する方法
Visual Studioでは、上部の実行ボタンを押すとC#コードを実行できます。ショートカットキーを使う場合は、環境によって異なりますが、デバッグ実行やデバッグなし実行を使い分けます。
ターミナルでは、プロジェクトのフォルダで次のコマンドを入力します。
Bashdotnet run
実行中のプログラムを停止したい場合は、ターミナルで次のキー操作を使います。
Ctrl + C
Visual Studioで実行している場合は、停止ボタンを押すと終了できます。
4. C#の基本文法を初心者向けに解説
4-1. コメントの書き方
コメントは、コードの説明を書くために使います。プログラムの実行には影響しません。
1行コメントは、//を使います。
C#// これはコメントです
Console.WriteLine("こんにちは");
複数行コメントは、/* */を使います。
C#/*
複数行のコメントです。
メモや説明を書くときに使います。
*/
Console.WriteLine("C#を学習中です");
コメントは書きすぎても読みにくくなります。コードを見ただけでは意図が伝わりにくい部分に書くのがおすすめです。
4-2. 変数とデータ型の使い方
変数は、値を入れておく箱のようなものです。
C#int age = 20;
string name = "田中";
double height = 170.5;
bool isStudent = true;
代表的なデータ型は次のとおりです。
| 型 | 内容 | 例 |
|---|---|---|
| int | 整数 | 10 |
| double | 小数 | 3.14 |
| string | 文字列 | "こんにちは" |
| bool | 真偽値 | true / false |
| char | 1文字 | 'A' |
C#は型を重視する言語です。数値を入れる変数には数値、文字列を入れる変数には文字列を入れる必要があります。
4-3. 文字列と数値の扱い方
文字列はstringで扱います。
C#string firstName = "太郎";
string lastName = "山田";
Console.WriteLine(lastName + firstName);
文字列の中に変数を埋め込む場合は、文字列補間を使うと便利です。
C#string name = "佐藤";
int age = 25;
Console.WriteLine($"{name}さんは{age}歳です");
数値は、intやdoubleなどを使います。
C#int a = 10;
int b = 3;
Console.WriteLine(a + b);
Console.WriteLine(a - b);
Console.WriteLine(a * b);
Console.WriteLine(a / b);
整数同士の割り算では、小数部分が切り捨てられる点に注意しましょう。
C#int result = 10 / 3;
Console.WriteLine(result); // 3
小数で計算したい場合は、doubleを使います。
C#double result = 10.0 / 3.0;
Console.WriteLine(result);
4-4. 演算子の使い方
演算子は、計算や比較に使う記号です。
算術演算子には次のようなものがあります。
| 演算子 | 意味 |
|---|---|
| + | 足し算 |
| - | 引き算 |
| * | 掛け算 |
| / | 割り算 |
| % | 余り |
C#int x = 10;
int y = 3;
Console.WriteLine(x + y); // 13
Console.WriteLine(x - y); // 7
Console.WriteLine(x * y); // 30
Console.WriteLine(x / y); // 3
Console.WriteLine(x % y); // 1
比較演算子は、条件分岐でよく使います。
| 演算子 | 意味 |
|---|---|
| == | 等しい |
| != | 等しくない |
| > | より大きい |
| < | より小さい |
| >= | 以上 |
| <= | 以下 |
C#int score = 80;
Console.WriteLine(score >= 60); // true
4-5. if文による条件分岐
if文は、条件によって処理を分けるために使います。
C#int score = 75;
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("不合格");
}
C#の使い方を学ぶうえで、if文は非常によく使う基本文法です。
4-6. switch文の使い方
switch文は、1つの値に応じて処理を分けるときに便利です。
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;
}
if文でも同じことはできますが、条件が「値の一致」で分かれる場合はswitch文のほうが読みやすくなることがあります。
4-7. for文・while文による繰り返し処理
同じ処理を何度も実行したい場合は、繰り返し処理を使います。
for文は、回数が決まっている場合によく使います。
C#for (int i = 1; i <= 5; i++)
{
Console.WriteLine($"{i}回目の処理");
}
while文は、条件が成り立つ間だけ処理を繰り返します。
C#int count = 1;
while (count <= 5)
{
Console.WriteLine($"{count}回目");
count++;
}
無限ループにならないように、繰り返し条件がいつか false になるように書くことが大切です。
4-8. 配列とListの使い方
配列は、同じ型のデータをまとめて管理するために使います。
C#string[] fruits = { "りんご", "バナナ", "みかん" };
Console.WriteLine(fruits[0]); // りんご
Console.WriteLine(fruits[1]); // バナナ
配列の番号は0から始まります。
データの追加や削除をしたい場合は、Listが便利です。
C#List<string> names = new List<string>();
names.Add("田中");
names.Add("佐藤");
names.Add("鈴木");
foreach (string name in names)
{
Console.WriteLine(name);
}
Listを使うには、通常は次のusingを追加します。
C#using System.Collections.Generic;
4-9. メソッドの定義と呼び出し方
メソッドは、処理をひとまとまりにしたものです。同じ処理を何度も使いたいときに便利です。
C#static void SayHello()
{
Console.WriteLine("こんにちは");
}
SayHello();
値を受け取るメソッドも作れます。
C#static void Greet(string name)
{
Console.WriteLine($"{name}さん、こんにちは");
}
Greet("田中");
値を返すメソッドは、戻り値の型を指定します。
C#static int Add(int a, int b)
{
return a + b;
}
int result = Add(3, 5);
Console.WriteLine(result);
メソッドを使うと、コードの重複を減らし、読みやすく整理できます。
4-10. 例外処理の基本
例外処理は、プログラム実行中にエラーが発生したときに、異常終了を防ぐための仕組みです。
C#try
{
int number = int.Parse("abc");
Console.WriteLine(number);
}
catch (FormatException)
{
Console.WriteLine("数値に変換できませんでした");
}
tryの中にエラーが起こる可能性のある処理を書き、catchでエラー発生時の処理を書きます。
すべてのエラーを無視するのではなく、何が原因でエラーになったのかを確認できるようにすることが大切です。
5. C#のオブジェクト指向の使い方
5-1. クラスとインスタンスとは
クラスは、データと処理をまとめる設計図のようなものです。インスタンスは、その設計図から作られた実体です。
たとえば、会員情報を表すMemberクラスを作るとします。
C#class Member
{
public string Name { get; set; }
public int Age { get; set; }
public void Introduce()
{
Console.WriteLine($"{Name}です。{Age}歳です。");
}
}
このクラスからインスタンスを作るには、newを使います。
C#Member member = new Member();
member.Name = "山田";
member.Age = 30;
member.Introduce();
クラスは設計図、インスタンスは実際に使うもの、と考えると理解しやすくなります。
5-2. フィールド・プロパティ・メソッドの違い
C#のクラスでは、フィールド、プロパティ、メソッドを使います。
| 種類 | 役割 |
|---|---|
| フィールド | クラス内で使う変数 |
| プロパティ | 外部から値を安全に読み書きする仕組み |
| メソッド | クラスが持つ処理 |
例を見てみましょう。
C#class Product
{
private int price;
public string Name { get; set; }
public void Show()
{
Console.WriteLine($"{Name}の商品情報です");
}
}
priceはフィールド、Nameはプロパティ、Showはメソッドです。
初心者のうちは、外部から使うデータはプロパティ、内部だけで使うデータはフィールド、と考えるとよいでしょう。
5-3. コンストラクタの使い方
コンストラクタは、インスタンスを作るときに最初に実行される特別なメソッドです。
C#class User
{
public string Name { get; set; }
public User(string name)
{
Name = name;
}
public void ShowName()
{
Console.WriteLine(Name);
}
}
使うときは次のように書きます。
C#User user = new User("田中");
user.ShowName();
コンストラクタを使うと、インスタンス作成時に必要な値を必ず設定できます。
5-4. public・privateなどアクセス修飾子の使い方
アクセス修飾子は、クラスやメンバーをどこから使えるかを決めるものです。
| 修飾子 | 意味 |
|---|---|
| public | どこからでもアクセスできる |
| private | 同じクラスの中からだけアクセスできる |
| protected | 自分のクラスと継承先からアクセスできる |
| internal | 同じプロジェクト内からアクセスできる |
例を見てみましょう。
C#class BankAccount
{
private int balance;
public void Deposit(int amount)
{
if (amount > 0)
{
balance += amount;
}
}
public int GetBalance()
{
return balance;
}
}
balanceをprivateにすることで、外部から勝手に変更されるのを防げます。
5-5. 継承の基本
継承は、既存のクラスの機能を引き継いで新しいクラスを作る仕組みです。
C#class Animal
{
public void Eat()
{
Console.WriteLine("食べます");
}
}
class Dog : Animal
{
public void Bark()
{
Console.WriteLine("ワンワン");
}
}
使い方は次のとおりです。
C#Dog dog = new Dog();
dog.Eat();
dog.Bark();
DogクラスはAnimalクラスを継承しているため、Eatメソッドも使えます。
ただし、継承を使いすぎると構造が複雑になることがあります。初心者はまず「共通する処理を親クラスにまとめられる」と理解しておけば十分です。
5-6. インターフェースの使い方
インターフェースは、クラスが持つべき機能のルールを定義するものです。
C#interface IPrintable
{
void Print();
}
インターフェースを実装するクラスは、そのメソッドを必ず定義します。
C#class Report : IPrintable
{
public void Print()
{
Console.WriteLine("レポートを印刷します");
}
}
使い方は次のとおりです。
C#IPrintable printable = new Report();
printable.Print();
インターフェースを使うと、「印刷できるもの」「保存できるもの」など、機能の共通ルールを作れます。
5-7. 初心者がつまずきやすいオブジェクト指向の考え方
初心者がオブジェクト指向でつまずきやすい理由は、「なぜクラスを作る必要があるのか」が見えにくいからです。
小さなプログラムでは、すべての処理を1つの場所に書いても動きます。しかし、プログラムが大きくなると、どこに何が書いてあるかわかりにくくなります。
そこで、関連するデータと処理をクラスにまとめます。
たとえば、会員情報ならMemberクラス、商品情報ならProductクラス、注文情報ならOrderクラスのように分けます。
オブジェクト指向は、現実のものや役割ごとにプログラムを整理する考え方です。最初から完璧に設計しようとせず、「関連するものをまとめる」ことから始めましょう。
6. C#の実践的なコード例
6-1. 入力した文字を画面に表示するコード例
ユーザーが入力した文字を表示するには、Console.ReadLineを使います。
C#Console.WriteLine("名前を入力してください");
string name = Console.ReadLine();
Console.WriteLine($"{name}さん、こんにちは");
Console.ReadLineは、キーボードから入力された文字列を受け取ります。
入力された値は文字列として扱われるため、数値として使いたい場合は変換が必要です。
6-2. 簡単な計算機を作るコード例
2つの数値を入力して、足し算する簡単な計算機です。
C#Console.WriteLine("1つ目の数値を入力してください");
int number1 = int.Parse(Console.ReadLine());
Console.WriteLine("2つ目の数値を入力してください");
int number2 = int.Parse(Console.ReadLine());
int result = number1 + number2;
Console.WriteLine($"計算結果は{result}です");
int.Parseは、文字列を整数に変換する命令です。
ただし、数値以外を入力するとエラーになります。実用的には、int.TryParseを使うと安全です。
C#Console.WriteLine("数値を入力してください");
string input = Console.ReadLine();
if (int.TryParse(input, out int number))
{
Console.WriteLine($"入力された数値は{number}です");
}
else
{
Console.WriteLine("数値ではありません");
}
6-3. 条件分岐で合格・不合格を判定するコード例
点数を入力して、合格か不合格かを判定するコードです。
C#Console.WriteLine("点数を入力してください");
int score = int.Parse(Console.ReadLine());
if (score >= 60)
{
Console.WriteLine("合格です");
}
else
{
Console.WriteLine("不合格です");
}
さらに評価を分けることもできます。
C#if (score >= 90)
{
Console.WriteLine("評価A");
}
else if (score >= 80)
{
Console.WriteLine("評価B");
}
else if (score >= 60)
{
Console.WriteLine("評価C");
}
else
{
Console.WriteLine("不合格");
}
条件分岐はC#の使い方の中でも特に重要です。実務でも頻繁に使います。
6-4. Listを使ってデータを管理するコード例
Listを使うと、複数のデータをまとめて管理できます。
C#List<string> tasks = new List<string>();
tasks.Add("メールを確認する");
tasks.Add("資料を作成する");
tasks.Add("会議に参加する");
foreach (string task in tasks)
{
Console.WriteLine(task);
}
データを削除することもできます。
C#tasks.Remove("資料を作成する");
件数を確認するには、Countを使います。
C#Console.WriteLine($"タスク数: {tasks.Count}");
配列よりも柔軟にデータを増減できるため、実践ではListをよく使います。
6-5. ファイルを読み書きするコード例
C#では、テキストファイルの読み書きも簡単にできます。
ファイルに文字を書き込む例です。
C#string path = "sample.txt";
string text = "C#でファイルを書き込みます";
File.WriteAllText(path, text);
Console.WriteLine("ファイルに書き込みました");
ファイルを読み込む例です。
C#string path = "sample.txt";
if (File.Exists(path))
{
string text = File.ReadAllText(path);
Console.WriteLine(text);
}
else
{
Console.WriteLine("ファイルが見つかりません");
}
Fileクラスを使うには、次のusingが必要になる場合があります。
C#using System.IO;
ファイル操作では、ファイルが存在しない場合やアクセスできない場合も考えて処理を書くことが重要です。
6-6. LINQでデータを検索・抽出するコード例
LINQは、コレクションのデータを検索・抽出・並び替えするための便利な機能です。
C#List<int> numbers = new List<int> { 10, 25, 30, 45, 50 };
var results = numbers.Where(n => n >= 30);
foreach (int number in results)
{
Console.WriteLine(number);
}
このコードでは、30以上の数値だけを取り出しています。
文字列のリストから条件に合うデータを探すこともできます。
C#List<string> names = new List<string> { "Tanaka", "Sato", "Suzuki", "Takahashi" };
var result = names.Where(name => name.StartsWith("T"));
foreach (string name in result)
{
Console.WriteLine(name);
}
LINQを使うと、複雑な検索処理も短く読みやすく書けます。
6-7. クラスを使った簡単な会員管理コード例
最後に、クラスとListを組み合わせた簡単な会員管理のコード例を見てみましょう。
C#class Member
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public void ShowInfo()
{
Console.WriteLine($"ID:{Id} 名前:{Name} 年齢:{Age}");
}
}
List<Member> members = new List<Member>();
members.Add(new Member { Id = 1, Name = "田中", Age = 25 });
members.Add(new Member { Id = 2, Name = "佐藤", Age = 30 });
members.Add(new Member { Id = 3, Name = "鈴木", Age = 22 });
foreach (Member member in members)
{
member.ShowInfo();
}
年齢が25歳以上の会員だけを抽出する場合は、LINQを使えます。
C#var adultMembers = members.Where(member => member.Age >= 25);
foreach (Member member in adultMembers)
{
member.ShowInfo();
}
このように、クラス、List、LINQを組み合わせると、実践的なデータ管理ができるようになります。
7. C#開発でよく使う便利な機能
7-1. デバッグの使い方
デバッグとは、プログラムの動きを確認しながら問題を見つける作業です。
C#を書いていると、思った通りに動かないことがあります。そのときに、どの行でどんな値になっているのかを確認するのがデバッグです。
Visual Studioでは、デバッグ実行を使うことで、プログラムを1行ずつ確認できます。
主に確認するポイントは次のとおりです。
| 確認内容 | 目的 |
|---|---|
| 変数の値 | 想定した値が入っているか確認する |
| 処理の流れ | if文やループが正しく動いているか確認する |
| エラー箇所 | どの行で問題が起きたか確認する |
初心者ほど、エラーが出たらすぐにコードを大きく変えるのではなく、まずデバッグで状態を確認する習慣をつけましょう。
7-2. ブレークポイントで処理を確認する方法
ブレークポイントは、プログラムを一時停止させる目印です。
Visual Studioでは、コード行の左側をクリックするとブレークポイントを設定できます。その状態でデバッグ実行すると、指定した行で処理が止まります。
ブレークポイントで停止したら、次のようなことを確認できます。
変数に入っている値
次に実行される処理
条件分岐の判定結果
ループの回数
たとえば、次のコードでscoreの値を確認できます。
C#int score = 75;
if (score >= 60)
{
Console.WriteLine("合格");
}
ブレークポイントを使えるようになると、C#の使い方だけでなく、プログラムの流れそのものを理解しやすくなります。
7-3. エラー表示の読み方
C#でエラーが出たときは、エラーメッセージをよく読むことが大切です。
エラー表示には、主に次の情報が含まれます。
| 情報 | 内容 |
|---|---|
| エラー内容 | 何が問題なのか |
| ファイル名 | どのファイルで起きたか |
| 行番号 | どの行で起きたか |
| エラーコード | エラーの種類 |
初心者はエラーメッセージを見ると難しく感じますが、多くの場合、行番号を見て該当箇所を確認すれば解決のヒントがあります。
たとえば、セミコロン忘れ、変数名の間違い、型の違いなどはよくあるエラーです。
7-4. コード補完の活用方法
コード補完は、入力途中のコードを候補として表示してくれる機能です。
たとえば、Console.と入力すると、WriteLineなどの候補が表示されます。
C#Console.WriteLine("こんにちは");
コード補完を使うメリットは次のとおりです。
入力ミスを減らせる
メソッド名を覚えきれていなくても候補から選べる
プロパティやメソッドの存在に気づける
コーディング速度が上がる
初心者は、補完候補を見ることで「このクラスにはこんな機能があるのか」と学ぶこともできます。
7-5. NuGetパッケージの使い方
NuGetは、C#や.NETで使えるライブラリを追加するための仕組みです。
ライブラリとは、便利な機能をまとめた部品のようなものです。たとえば、JSONの処理、データベース接続、ログ出力、画像処理など、さまざまな機能を追加できます。
Visual Studioでは、プロジェクトを右クリックして「NuGetパッケージの管理」から追加できます。
コマンドで追加する場合は、次のように入力します。
Bashdotnet add package パッケージ名
NuGetを使うと便利ですが、初心者のうちは標準機能でできることを学んでから使うと理解しやすくなります。
7-6. Git連携の基本
Gitは、ソースコードの変更履歴を管理するためのツールです。
Gitを使うと、次のようなことができます。
変更前の状態に戻す
作業履歴を確認する
複数人で開発する
GitHubなどにコードを保存する
C#の学習段階でも、Gitを使っておくと便利です。練習用のコードをGitHubに保存すれば、自分の学習記録やポートフォリオにもなります。
最初に覚える基本コマンドは次のとおりです。
Bashgit init
git add .
git commit -m "first commit"
Visual StudioにもGit連携機能があるため、画面操作で変更管理を行うこともできます。
7-7. テストコードの基本
テストコードは、プログラムが正しく動くかを確認するためのコードです。
たとえば、足し算メソッドが正しい結果を返すか確認します。
C#public class Calculator
{
public int Add(int a, int b)
{
return a + b;
}
}
このような処理に対して、「2 + 3 は 5 になるべき」と確認するのがテストです。
初心者のうちは、まず手動で実行結果を確認するだけでも構いません。しかし、プログラムが大きくなると、テストコードを書くことで修正時のミスを減らせます。
8. C#初心者がよく遭遇するエラーと対処法
8-1. セミコロン忘れによるエラー
C#では、多くの文の末尾にセミコロン;が必要です。
間違い例です。
C#Console.WriteLine("こんにちは")
正しくは次のように書きます。
C#Console.WriteLine("こんにちは");
セミコロン忘れは初心者によくあるエラーです。エラーが出たら、まず直前の行の末尾を確認しましょう。
8-2. 型の変換ミスによるエラー
C#は型に厳しい言語です。そのため、文字列を数値として使う場合は変換が必要です。
間違い例です。
C#string input = "100";
int number = input;
正しくは次のように書きます。
C#string input = "100";
int number = int.Parse(input);
ただし、入力値が数値とは限らない場合は、TryParseを使うのがおすすめです。
C#string input = "100";
if (int.TryParse(input, out int number))
{
Console.WriteLine(number);
}
else
{
Console.WriteLine("変換できません");
}
8-3. NullReferenceExceptionの原因と対策
NullReferenceExceptionは、C#初心者がよく遭遇するエラーです。
これは、値が入っていない変数に対して処理をしようとしたときに発生します。
C#string name = null;
Console.WriteLine(name.Length);
このコードでは、nameがnullなので、Lengthを使おうとするとエラーになります。
対策としては、nullかどうかを確認します。
C#string name = null;
if (name != null)
{
Console.WriteLine(name.Length);
}
else
{
Console.WriteLine("nameはnullです");
}
また、次のように書くこともできます。
C#Console.WriteLine(name?.Length);
nullの扱いに慣れることは、C#の使い方を理解するうえでとても重要です。
8-4. using不足によるエラー
C#では、特定の機能を使うためにusingが必要になることがあります。
たとえば、Listを使う場合は次の名前空間が必要です。
C#using System.Collections.Generic;
ファイル操作では、次の名前空間を使うことがあります。
C#using System.IO;
LINQを使う場合は、次の名前空間が必要になることがあります。
C#using System.Linq;
エラーが出たときに「型または名前空間の名前が見つかりません」と表示された場合は、using不足や参照不足を確認しましょう。
8-5. ビルドできないときの確認ポイント
C#でビルドできない場合は、次の点を確認しましょう。
| 確認ポイント | 内容 |
|---|---|
| セミコロン | 文末に;があるか |
| 波かっこ | {}の数が合っているか |
| 変数名 | 宣言した名前と使っている名前が同じか |
| 型 | 代入している値の型が合っているか |
| using | 必要な名前空間が追加されているか |
| エラー行 | 表示された行番号の周辺を確認する |
エラー行そのものではなく、その前の行に原因があることもあります。エラーメッセージの行番号だけでなく、前後のコードも確認しましょう。
8-6. 実行結果が思い通りにならないときの見直し方
エラーは出ないのに結果が違う場合は、ロジックに問題がある可能性があります。
見直すポイントは次のとおりです。
変数に想定通りの値が入っているか
if文の条件が正しいか
ループの開始値と終了条件が正しいか
計算式にミスがないか
入力値の型変換ができているか
簡単な確認方法として、途中でConsole.WriteLineを使って値を表示する方法があります。
C#int score = 75;
Console.WriteLine($"scoreの値: {score}");
デバッグ機能を使えば、さらに詳しく確認できます。
9. C#を効率よく学ぶための学習ステップ
9-1. 初心者が最初に覚えるべき文法
C#初心者が最初に覚えるべき文法は、次のとおりです。
| 優先度 | 学ぶ内容 |
|---|---|
| 高 | 変数、データ型、Console.WriteLine |
| 高 | if文、for文、while文 |
| 高 | 配列、List |
| 中 | メソッド |
| 中 | クラス、プロパティ |
| 中 | 例外処理 |
| 低 | 継承、インターフェース、LINQ |
最初からすべてを完璧に覚えようとすると挫折しやすくなります。まずは、コンソールアプリでよく使う文法から順番に覚えましょう。
9-2. 小さなプログラムを作りながら学ぶ方法
C#の使い方を効率よく覚えるには、小さなプログラムを作るのが効果的です。
おすすめの練習テーマは次のとおりです。
名前を入力して挨拶するアプリ
2つの数値を計算するアプリ
点数で合格判定するアプリ
簡単なToDoリスト
数当てゲーム
会員一覧を表示するアプリ
ファイルにメモを保存するアプリ
小さなアプリでも、変数、条件分岐、繰り返し、List、メソッドなどを組み合わせて学べます。
9-3. コンソールアプリから始めるべき理由
初心者がC#を学ぶなら、最初はコンソールアプリから始めるのがおすすめです。
理由は、画面デザインやデータベースなどを考えずに、C#の基本文法だけに集中できるからです。
WindowsアプリやWebアプリから始めると、ボタン、画面、通信、設定ファイルなど、覚えることが一気に増えます。
まずはコンソールアプリで、次の流れを理解しましょう。
入力する
処理する
結果を表示する
この基本がわかると、WindowsアプリやWebアプリに進んだときも理解しやすくなります。
9-4. Windowsアプリ・Webアプリ・Unityへ進む流れ
C#の基本を学んだら、目的に応じて次の分野へ進みましょう。
| 目的 | 次に学ぶ技術 |
|---|---|
| Windowsアプリを作りたい | WinForms、WPF、.NET MAUI |
| Webアプリを作りたい | ASP.NET Core、HTML、CSS、JavaScript |
| ゲームを作りたい | Unity |
| 業務システムを作りたい | データベース、SQL、Entity Framework |
| APIを作りたい | ASP.NET Core Web API |
Unityでゲームを作りたい場合も、C#の基本文法を先に理解しておくとスムーズです。
Webアプリを作りたい場合は、C#だけでなく、HTMLやCSS、データベースの知識も必要になります。
9-5. C#学習で挫折しないためのコツ
C#学習で挫折しないためには、次のポイントを意識しましょう。
1つ目は、完璧を目指しすぎないことです。最初からすべての文法を理解する必要はありません。
2つ目は、エラーを怖がらないことです。プログラミングではエラーが出るのが普通です。エラーを直す過程で理解が深まります。
3つ目は、小さく作って少しずつ改良することです。いきなり大きなアプリを作ろうとすると、何から手をつければよいかわからなくなります。
4つ目は、コードを写すだけで終わらせないことです。サンプルコードを動かしたら、変数名や条件、表示内容を変えて試してみましょう。
9-6. 次に学ぶべき関連技術
C#の基本を学んだ後は、目的に応じて関連技術を学びましょう。
| 分野 | 学ぶ内容 |
|---|---|
| 共通 | Git、デバッグ、テスト |
| Web開発 | ASP.NET Core、HTML、CSS、JavaScript |
| データベース | SQL、Entity Framework |
| ゲーム開発 | Unity、ゲームオブジェクト、物理演算 |
| アプリ開発 | WPF、WinForms、.NET MAUI |
| 実務開発 | 設計、例外処理、ログ、セキュリティ |
C#だけでなく、周辺技術も学ぶことで、作れるものの幅が広がります。
10. C#の使い方に関するよくある質問
10-1. C#は初心者でも独学できる?
C#は初心者でも独学できます。
開発環境が整っており、サンプルコードも多いため、基礎から順番に学べば十分に習得可能です。
ただし、最初から難しいアプリを作ろうとすると挫折しやすくなります。まずはコンソールアプリで、変数、条件分岐、繰り返し、List、メソッドを練習しましょう。
10-2. C#とJavaはどちらを学ぶべき?
C#とJavaは文法が似ている部分も多く、どちらも実務で使われる言語です。
Windowsアプリ、Unity、Microsoft系の開発に興味があるならC#がおすすめです。Android開発やJavaを使う企業システムに興味があるならJavaも選択肢になります。
初心者の場合は、「何を作りたいか」で選ぶとよいでしょう。ゲームを作りたいならUnityで使えるC#は特に相性がよいです。
10-3. C#でアプリ開発を始めるには何が必要?
C#でアプリ開発を始めるには、主に次のものが必要です。
パソコン
Visual StudioまたはVS Code
.NET SDK
C#の基本文法
作りたいアプリの目的
初心者は、Visual Studioを使ってコンソールアプリから始めるのがおすすめです。その後、Windowsアプリ、Webアプリ、Unityなどに進むと理解しやすくなります。
10-4. C#の学習にはどれくらい時間がかかる?
C#の基本文法だけなら、毎日少しずつ学習して数週間から数か月で理解できます。
ただし、実際にアプリを作れるようになるには、文法だけでなく、デバッグ、設計、データ管理、エラー処理なども学ぶ必要があります。
学習時間の目安は次のとおりです。
| 目標 | 目安 |
|---|---|
| 基本文法を理解する | 数週間 |
| 簡単なコンソールアプリを作る | 1〜2か月 |
| 簡単なアプリを自作する | 2〜4か月 |
| 実務レベルを目指す | 半年〜1年以上 |
大切なのは、時間よりも継続してコードを書くことです。
10-5. C#で副業や転職を目指せる?
C#を学ぶことで、副業や転職を目指すことは可能です。
特に、業務システム、Webアプリ、Windowsアプリ、Unity関連の開発ではC#が使われることがあります。
ただし、C#の文法だけでは不十分です。実務を目指す場合は、次のような知識も必要になります。
Git
SQL
データベース
Webの基礎
オブジェクト指向設計
テスト
エラー処理
フレームワーク
まずは小さなアプリを作り、GitHubなどに成果物を残していくと学習の証明になります。
10-6. C#を学んだ後に作るべき練習アプリ
C#を学んだ後は、次のような練習アプリを作るのがおすすめです。
| アプリ | 学べる内容 |
|---|---|
| 電卓アプリ | 変数、条件分岐、メソッド |
| ToDoリスト | List、クラス、ファイル保存 |
| 家計簿アプリ | 入力、計算、データ管理 |
| 会員管理アプリ | クラス、List、検索 |
| クイズアプリ | 条件分岐、配列、繰り返し |
| メモ帳アプリ | ファイル読み書き |
| 簡単なWeb API | ASP.NET Core、HTTP、JSON |
最初はコンソールアプリで作り、慣れてきたら画面付きアプリやWebアプリに発展させるとよいでしょう。
まとめ
C#は、初心者にも学びやすく、実践で使える場面が多いプログラミング言語です。Windowsアプリ、Webアプリ、ゲーム開発、業務システムなど、さまざまな分野で活用できます。
C#の使い方を学ぶときは、まず開発環境を整え、コンソールアプリで基本文法を練習するのがおすすめです。変数、データ型、条件分岐、繰り返し、配列、List、メソッド、例外処理を順番に学べば、少しずつプログラムの流れが理解できるようになります。
その後、クラスやインスタンス、プロパティ、コンストラクタ、継承、インターフェースなどのオブジェクト指向を学ぶことで、より実践的なコードを書けるようになります。
C#学習で大切なのは、コードを読むだけでなく、実際に書いて動かすことです。サンプルコードをそのまま実行したら、値や条件を変えて試してみましょう。エラーが出た場合も、原因を確認しながら修正することで理解が深まります。
まずは「Hello World」や簡単な計算機、合格判定アプリ、ToDoリストなど、小さなプログラムから始めてみてください。小さな成功体験を積み重ねることで、C#の使い方が自然と身につき、アプリ開発やゲーム開発など次のステップへ進みやすくなります。

