C# サンプルプログラム集|初心者でもコピペで学べる基本文法と実践例
はじめに
C#を学び始めたものの、「文法の説明だけではイメージしにくい」「実際に動くC#サンプルプログラムを見ながら学びたい」と感じている方は多いのではないでしょうか。
プログラミングは、コードを読むだけでなく、実際に入力して動かすことで理解が深まります。短いサンプルコードを実行し、変数の値や条件を変更しながら結果を確認することが、上達への近道です。
この記事では、C#初心者向けに、基本文法から条件分岐、繰り返し処理、配列、List、クラス、例外処理まで、幅広いC#サンプルプログラムを紹介します。電卓、じゃんけんゲーム、ファイル操作などの実践例も掲載しているため、基礎を学んだあとの練習にも活用できます。
それぞれのサンプルは、基本的にコピーしてコンソールアプリへ貼り付ければ実行できます。まずはそのまま動かし、次に数値や文字列、条件などを変更して、プログラムの動きを確かめてみましょう。
1. C#サンプルプログラムを使う前に知っておきたいこと
1-1. C#とは?初心者が学ぶメリット
C#は、Microsoftが開発したプログラミング言語です。「シーシャープ」と読み、現在は.NETと組み合わせて、さまざまな種類のアプリケーション開発に利用されています。
C#は、変数、条件分岐、繰り返し、クラスといった一般的なプログラミングの考え方を体系的に学べる言語です。構文が整理されており、開発環境のサポートも充実しているため、初心者でも学習を進めやすいという特徴があります。
C#を学ぶ主なメリットは次のとおりです。
コンソールアプリからWebアプリ、ゲームまで幅広く開発できる
Visual Studioの入力補完やエラー表示を利用できる
オブジェクト指向プログラミングを基礎から学べる
業務システムや社内ツールの開発にも活用できる
Windows以外の環境でも.NETを使って開発できる
C#の文法を身につけると、単にコードを書けるだけでなく、プログラムを部品に分けて整理する考え方も学べます。
1-2. C#で作れるもの|コンソールアプリ・Webアプリ・ゲーム・業務アプリ
C#では、目的に応じてさまざまなアプリケーションを作成できます。
コンソールアプリは、文字を入力したり、計算結果を表示したりするシンプルなプログラムです。画面構成を考える必要がないため、C#の基本文法を学ぶのに適しています。
Webアプリは、ブラウザから利用するシステムです。ASP.NET Coreを利用すると、Webサイト、Web API、管理画面などを開発できます。
ゲームの分野では、Unityのスクリプト言語としてC#が使われています。キャラクターの移動、当たり判定、スコア計算などをC#で記述できます。
業務アプリでは、顧客管理、在庫管理、売上管理、帳票出力、データベース連携などにC#が利用されています。Windows向けのデスクトップアプリや、社内向けWebシステムの開発にも適しています。
このほかにも、スマートフォンアプリ、クラウドサービス、バッチ処理、テスト自動化、開発支援ツールなど、C#の活用範囲は広がっています。
1-3. サンプルプログラムで学ぶと理解しやすい理由
プログラミングの説明を読むだけでは、コードがどの順番で実行され、結果がどのように変化するのかを把握しにくいことがあります。
サンプルプログラムを利用すると、次の流れで学習できます。
コードをコピーして実行する
実行結果を確認する
コードの一部を変更する
変更後の結果を確認する
エラーが出た場合は原因を調べる
たとえば、if文のサンプルで条件をscore >= 60からscore >= 70へ変更すると、同じ点数でも判定結果が変わります。このように、自分でコードを変更すると、それぞれの構文が持つ役割を体験的に理解できます。
サンプルコードは完成品として使うだけでなく、実験するための教材として活用することが重要です。
1-4. この記事のサンプルコードの使い方
この記事のC#サンプルプログラムは、主にコンソールアプリでの実行を想定しています。
基本的な使い方は次のとおりです。
Visual StudioまたはVisual Studio Codeでコンソールアプリを作成する
Program.csを開く既存のコードを削除する
サンプルコードを貼り付ける
プログラムを実行する
表示された結果を確認する
各コードブロックは、原則として独立したサンプルです。複数のサンプルを同じProgram.csへ一度に貼り付けると、変数名やクラス名が重複してエラーになる場合があります。最初は、1つずつ貼り付けて実行してください。
また、C#では大文字と小文字が区別されます。たとえば、Consoleとconsoleは別の名前として扱われます。コードを入力するときは、大文字と小文字、セミコロン、波かっこの位置にも注意しましょう。
2. C#サンプルプログラムを動かす準備
2-1. Visual Studioを使う方法
Visual Studioは、C#開発に必要な機能がまとまった統合開発環境です。コードの入力補完、エラー表示、デバッグ、プロジェクト管理などを利用できます。
Visual Studioでコンソールアプリを作成する基本的な手順は次のとおりです。
Visual Studioをインストールする
インストール時に「.NET デスクトップ開発」を選択する
Visual Studioを起動する
「新しいプロジェクトの作成」を選択する
「コンソール アプリ」を選択する
プロジェクト名と保存場所を指定する
プロジェクトを作成する
Program.csにコードを書く実行ボタン、または
CtrlキーとF5キーを押して実行する
ブレークポイントを設定して、変数の中身を1行ずつ確認したい場合は、F5キーでデバッグ実行します。
C#を初めて学ぶ場合は、必要な機能が一通りそろっているVisual Studioから始めると、環境設定で迷いにくくなります。
2-2. Visual Studio Codeを使う方法
Visual Studio Codeは、軽量なコードエディターです。Windows、macOS、Linuxで利用でき、拡張機能を追加することでC#の開発環境を構築できます。
基本的な準備は次のとおりです。
Visual Studio Codeをインストールする
.NET SDKをインストールする
Visual Studio Codeを起動する
拡張機能画面を開く
Microsoftが提供するC#開発用拡張機能をインストールする
ターミナルでコンソールプロジェクトを作成する
作成したフォルダーをVisual Studio Codeで開く
ターミナルでは、次のコマンドでプロジェクトを作成できます。
Bashdotnet new console -n CSharpSample
cd CSharpSample
code .
プログラムを実行するときは、ターミナルで次のコマンドを入力します。
Bashdotnet run
Visual Studio Codeは軽量で扱いやすい一方、.NET SDKや拡張機能を自分で準備する必要があります。コマンド操作にも慣れたい方に適しています。
2-3. .NET SDKのインストール方法
C#のプログラムを作成、ビルド、実行するには、.NET SDKが必要です。
.NET SDKをインストールしたあと、ターミナルまたはコマンドプロンプトで次のコマンドを実行してください。
Bashdotnet --version
バージョン番号が表示されれば、.NET SDKを利用できる状態です。
次のように表示された場合は、コマンドが認識されています。
10.0.100
表示される番号は、インストールしている.NET SDKのバージョンによって異なります。
コマンドが見つからないというエラーが出る場合は、次の点を確認します。
.NET SDKをインストールしたか
.NET Runtimeだけをインストールしていないか
インストール後にターミナルを開き直したか
環境変数の設定が反映されているか
.NET Runtimeはプログラムを実行するための環境であり、SDKは開発に必要なツールを含む環境です。C#のコードを書く場合は、SDKをインストールします。
2-4. Hello Worldを実行して動作確認する
開発環境を準備したら、最初に「Hello World」を表示して動作確認を行います。
C#Console.WriteLine("Hello, World!");
実行結果は次のとおりです。
Hello, World!
Console.WriteLineは、コンソール画面に文字や数値を表示する命令です。丸かっこの中に表示したい内容を書きます。
文字列は、次のようにダブルクォーテーションで囲みます。
C#Console.WriteLine("C#の学習を始めます");
実行結果は次のとおりです。
C#の学習を始めます
ここまで実行できれば、C#サンプルプログラムを試す準備は完了です。
3. C#の基本文法がわかるサンプルプログラム
3-1. 文字を表示するサンプル
コンソールに文字を表示するには、Console.WriteLineを使います。
C#Console.WriteLine("こんにちは");
Console.WriteLine("C#を勉強しています");
Console.WriteLine("サンプルプログラムを実行しました");
実行結果は次のとおりです。
こんにちは
C#を勉強しています
サンプルプログラムを実行しました
WriteLineは、内容を表示したあとに改行します。改行せずに続けて表示したい場合は、Console.Writeを使います。
C#Console.Write("C#");
Console.Write("サンプル");
Console.Write("プログラム");
実行結果は次のとおりです。
C#サンプルプログラム
3-2. 変数を使うサンプル
変数は、文字や数値などのデータを一時的に保存するための入れ物です。
C#string name = "佐藤";
int age = 25;
double height = 170.5;
bool isStudent = false;
Console.WriteLine(name);
Console.WriteLine(age);
Console.WriteLine(height);
Console.WriteLine(isStudent);
このサンプルでは、次の型を使用しています。
string:文字列を保存するint:整数を保存するdouble:小数を含む数値を保存するbool:trueまたはfalseを保存する
変数の値は、あとから変更できます。
C#int score = 70;
Console.WriteLine(score);
score = 85;
Console.WriteLine(score);
実行結果は次のとおりです。
70
85
2回目の代入では、型名のintを書きません。すでに作成した変数へ新しい値を代入しているためです。
3-3. 数値計算をするサンプル
C#では、四則演算を使って数値を計算できます。
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);
実行結果は次のとおりです。
13
7
30
3
1
%は、割り算の余りを求める演算子です。
int同士を割り算すると、小数部分は切り捨てられます。小数まで求めたい場合は、doubleを使います。
C#double a = 10;
double b = 3;
double result = a / b;
Console.WriteLine(result);
実行結果は、おおよそ次のようになります。
3.3333333333333335
計算結果を文章と一緒に表示する場合は、文字列補間を利用すると読みやすくなります。
C#int price = 1200;
int quantity = 3;
int total = price * quantity;
Console.WriteLine($"合計金額は{total}円です");
3-4. 文字列を連結するサンプル
複数の文字列をつなげるには、+演算子を使います。
C#string lastName = "山田";
string firstName = "太郎";
string fullName = lastName + firstName;
Console.WriteLine(fullName);
実行結果は次のとおりです。
山田太郎
文字列補間を使うと、変数を文章の中へ埋め込めます。
C#string name = "鈴木";
int age = 30;
Console.WriteLine($"名前は{name}です。年齢は{age}歳です。");
実行結果は次のとおりです。
名前は鈴木です。年齢は30歳です。
文字列補間では、ダブルクォーテーションの前に$を付け、変数を波かっこで囲みます。
3-5. ユーザー入力を受け取るサンプル
キーボードから入力された文字を受け取るには、Console.ReadLineを使います。
C#Console.Write("名前を入力してください:");
string? name = Console.ReadLine();
Console.WriteLine($"こんにちは、{name}さん");
実行例は次のとおりです。
名前を入力してください:田中
こんにちは、田中さん
Console.ReadLineで受け取る値は文字列です。数値として使う場合は変換が必要です。
C#Console.Write("年齢を入力してください:");
string? input = Console.ReadLine();
int age = int.Parse(input!);
Console.WriteLine($"来年は{age + 1}歳です");
ただし、int.Parseに数字以外の文字を渡すとエラーになります。実際のプログラムでは、後ほど紹介するint.TryParseを利用するほうが安全です。
3-6. コメントを書くサンプル
コメントは、コードの説明やメモを書くために使います。コメントの内容はプログラムとして実行されません。
1行だけコメントを書く場合は、//を使います。
C#// 画面にメッセージを表示する
Console.WriteLine("こんにちは");
// 商品価格
int price = 1000;
複数行のコメントには、/*と*/を使います。
C#/*
このプログラムは
商品の合計金額を計算します
*/
int price = 1000;
int quantity = 3;
Console.WriteLine(price * quantity);
メソッドやクラスの説明には、///から始まるXMLドキュメントコメントも利用できます。
C#/// <summary>
/// 2つの整数を加算します。
/// </summary>
static int Add(int a, int b)
{
return a + b;
}
コメントを書きすぎると読みにくくなるため、コードだけでは目的が分かりにくい部分を中心に記述しましょう。
4. 条件分岐のC#サンプルプログラム
4-1. if文で条件を判定するサンプル
if文を使うと、条件を満たした場合だけ処理を実行できます。
C#int age = 20;
if (age >= 18)
{
Console.WriteLine("18歳以上です");
}
age >= 18がtrueの場合に、波かっこの中が実行されます。
条件を満たさない場合は、何も表示されません。
C#int temperature = 30;
if (temperature >= 25)
{
Console.WriteLine("暑い日です");
}
4-2. if else文で処理を分けるサンプル
条件を満たす場合と満たさない場合で処理を分けるには、if else文を使います。
C#int age = 16;
if (age >= 18)
{
Console.WriteLine("成人です");
}
else
{
Console.WriteLine("18歳未満です");
}
複数の条件を順番に判定する場合は、else ifを使います。
C#int score = 75;
if (score >= 80)
{
Console.WriteLine("評価はAです");
}
else if (score >= 60)
{
Console.WriteLine("評価はBです");
}
else
{
Console.WriteLine("評価はCです");
}
条件は上から順番に判定され、最初に一致した処理だけが実行されます。
4-3. switch文で複数条件を判定するサンプル
switch文は、1つの値に対して複数の候補を判定するときに便利です。
C#int menu = 2;
switch (menu)
{
case 1:
Console.WriteLine("新規登録を選びました");
break;
case 2:
Console.WriteLine("データ検索を選びました");
break;
case 3:
Console.WriteLine("終了を選びました");
break;
default:
Console.WriteLine("該当するメニューがありません");
break;
}
caseに一致する値がなかった場合は、defaultの処理が実行されます。
文字列も判定できます。
C#string color = "red";
switch (color)
{
case "red":
Console.WriteLine("赤です");
break;
case "blue":
Console.WriteLine("青です");
break;
default:
Console.WriteLine("登録されていない色です");
break;
}
4-4. 比較演算子と論理演算子を使うサンプル
条件式では、比較演算子を使って値を比較します。
| 演算子 | 意味 |
|---|---|
== | 等しい |
!= | 等しくない |
> | より大きい |
< | より小さい |
>= | 以上 |
<= | 以下 |
C#int number = 10;
Console.WriteLine(number == 10);
Console.WriteLine(number != 5);
Console.WriteLine(number > 8);
Console.WriteLine(number <= 10);
複数の条件を組み合わせる場合は、論理演算子を使います。
&&:両方の条件を満たす||:どちらかの条件を満たす!:条件を反転する
C#int age = 25;
bool hasTicket = true;
if (age >= 18 && hasTicket)
{
Console.WriteLine("入場できます");
}
次のサンプルでは、土曜日または日曜日かどうかを判定します。
C#string day = "日曜日";
if (day == "土曜日" || day == "日曜日")
{
Console.WriteLine("休日です");
}
4-5. 偶数・奇数を判定するサンプル
偶数と奇数は、2で割った余りを使って判定できます。
C#Console.Write("整数を入力してください:");
if (int.TryParse(Console.ReadLine(), out int number))
{
if (number % 2 == 0)
{
Console.WriteLine($"{number}は偶数です");
}
else
{
Console.WriteLine($"{number}は奇数です");
}
}
else
{
Console.WriteLine("整数を入力してください");
}
2で割った余りが0なら偶数、0以外なら奇数です。
4-6. 点数から合否を判定するサンプル
入力された点数が60点以上なら合格と判定するC#サンプルプログラムです。
C#Console.Write("点数を入力してください:");
if (int.TryParse(Console.ReadLine(), out int score))
{
if (score < 0 || score > 100)
{
Console.WriteLine("0から100までの点数を入力してください");
}
else if (score >= 60)
{
Console.WriteLine("合格です");
}
else
{
Console.WriteLine("不合格です");
}
}
else
{
Console.WriteLine("点数は整数で入力してください");
}
数値変換だけでなく、0点から100点までの範囲も確認しています。実践的なプログラムでは、入力値が想定した範囲に収まっているかも確認することが大切です。
5. 繰り返し処理のC#サンプルプログラム
5-1. for文で繰り返すサンプル
for文は、繰り返す回数が決まっている処理に適しています。
C#for (int i = 1; i <= 5; i++)
{
Console.WriteLine(i);
}
実行結果は次のとおりです。
1
2
3
4
5
for文の丸かっこには、次の3つを記述します。
C#for (初期化; 継続条件; 更新処理)
次のサンプルでは、0から10までの偶数を表示します。
C#for (int i = 0; i <= 10; i += 2)
{
Console.WriteLine(i);
}
5-2. while文で繰り返すサンプル
while文は、条件を満たしている間、処理を繰り返します。
C#int count = 1;
while (count <= 5)
{
Console.WriteLine(count);
count++;
}
実行結果は、1から5までです。
while文では、条件がいつまでもtrueのままだと無限ループになります。繰り返しの中で、条件に使っている変数を適切に更新してください。
次のサンプルは、ユーザーが「exit」と入力するまで処理を繰り返します。
C#while (true)
{
Console.Write("文字を入力してください。終了する場合はexit:");
string? input = Console.ReadLine();
if (input == "exit")
{
break;
}
Console.WriteLine($"入力内容:{input}");
}
5-3. foreach文で配列を処理するサンプル
foreach文を使うと、配列やリストの要素を先頭から順番に取り出せます。
C#string[] fruits = { "りんご", "みかん", "バナナ" };
foreach (string fruit in fruits)
{
Console.WriteLine(fruit);
}
実行結果は次のとおりです。
りんご
みかん
バナナ
foreach文は、要素数を意識せずに全データを処理できる点がメリットです。
5-4. breakでループを終了するサンプル
breakを使うと、繰り返し処理を途中で終了できます。
C#for (int i = 1; i <= 10; i++)
{
if (i == 6)
{
break;
}
Console.WriteLine(i);
}
実行結果は、1から5までです。iが6になった時点でループを終了します。
配列から目的のデータを見つけた時点で検索を終了する場合にも使えます。
C#string[] names = { "佐藤", "鈴木", "高橋", "田中" };
string target = "高橋";
foreach (string name in names)
{
if (name == target)
{
Console.WriteLine($"{target}が見つかりました");
break;
}
}
5-5. continueで処理をスキップするサンプル
continueは、現在の繰り返しだけを中断し、次の繰り返しへ進む命令です。
C#for (int i = 1; i <= 5; i++)
{
if (i == 3)
{
continue;
}
Console.WriteLine(i);
}
実行結果は次のとおりです。
1
2
4
5
3だけがスキップされています。
次のサンプルでは、奇数をスキップして偶数だけを表示します。
C#for (int i = 1; i <= 10; i++)
{
if (i % 2 != 0)
{
continue;
}
Console.WriteLine(i);
}
5-6. 九九表を表示するサンプル
for文を入れ子にすると、九九表を作成できます。
C#for (int i = 1; i <= 9; i++)
{
for (int j = 1; j <= 9; j++)
{
Console.Write($"{i * j,3}");
}
Console.WriteLine();
}
外側のfor文が段を表し、内側のfor文が掛ける数を表しています。
{i * j,3}の,3は、表示幅を3文字分にそろえる指定です。数値の桁数が異なっても、表を見やすく整列できます。
6. 配列・リスト・コレクションのC#サンプルプログラム
6-1. 配列を作成して表示するサンプル
配列は、同じ型のデータを複数まとめて管理する仕組みです。
C#int[] scores = { 80, 65, 90, 75 };
Console.WriteLine(scores[0]);
Console.WriteLine(scores[1]);
Console.WriteLine(scores[2]);
Console.WriteLine(scores[3]);
配列の番号は0から始まります。scores[0]は最初の要素です。
foreach文を使うと、すべての要素を簡単に表示できます。
C#int[] scores = { 80, 65, 90, 75 };
foreach (int score in scores)
{
Console.WriteLine(score);
}
配列の要素数は、Lengthで取得できます。
C#string[] colors = { "赤", "青", "緑" };
Console.WriteLine($"要素数は{colors.Length}です");
6-2. 配列の合計値・平均値を求めるサンプル
foreach文を使って配列の合計値を計算します。
C#int[] scores = { 80, 65, 90, 75 };
int total = 0;
foreach (int score in scores)
{
total += score;
}
double average = (double)total / scores.Length;
Console.WriteLine($"合計:{total}");
Console.WriteLine($"平均:{average}");
(double)totalは、totalを一時的にdouble型として扱うキャストです。これにより、小数を含む平均値を求められます。
LINQを使う場合は、より短く記述できます。
C#int[] scores = { 80, 65, 90, 75 };
Console.WriteLine($"合計:{scores.Sum()}");
Console.WriteLine($"平均:{scores.Average()}");
6-3. Listを使ってデータを追加・削除するサンプル
List<T>は、あとから要素を追加したり削除したりできるコレクションです。
C#List<string> names = new List<string>();
names.Add("佐藤");
names.Add("鈴木");
names.Add("高橋");
foreach (string name in names)
{
Console.WriteLine(name);
}
要素を削除するには、Removeを使います。
C#List<string> names = new List<string>
{
"佐藤",
"鈴木",
"高橋"
};
names.Remove("鈴木");
foreach (string name in names)
{
Console.WriteLine(name);
}
指定した位置の要素を削除する場合は、RemoveAtを使います。
C#names.RemoveAt(0);
要素数は、Countで取得できます。
C#Console.WriteLine($"登録人数:{names.Count}");
配列は作成時に要素数が固定されますが、List<T>は要素数を変更できます。追加や削除が必要なデータには、Listが適しています。
6-4. Dictionaryでキーと値を管理するサンプル
Dictionary<TKey, TValue>は、キーと値を組み合わせてデータを管理します。
C#Dictionary<string, int> prices = new Dictionary<string, int>
{
{ "りんご", 150 },
{ "みかん", 120 },
{ "バナナ", 200 }
};
Console.WriteLine(prices["りんご"]);
キーを指定して、対応する値を取り出せます。
すべてのデータを表示する場合は、foreach文を使います。
C#foreach (KeyValuePair<string, int> item in prices)
{
Console.WriteLine($"{item.Key}:{item.Value}円");
}
存在しないキーを直接指定すると例外が発生します。安全に値を取得するには、TryGetValueを使います。
C#string target = "みかん";
if (prices.TryGetValue(target, out int price))
{
Console.WriteLine($"{target}は{price}円です");
}
else
{
Console.WriteLine("商品が見つかりません");
}
6-5. LINQでデータを検索・並び替えするサンプル
LINQを使うと、配列やListの検索、絞り込み、並び替えなどを簡潔に記述できます。
次のサンプルでは、70点以上の点数だけを取得します。
C#List<int> scores = new List<int>
{
55, 80, 72, 40, 95
};
IEnumerable<int> passedScores = scores.Where(score => score >= 70);
foreach (int score in passedScores)
{
Console.WriteLine(score);
}
昇順に並び替える場合は、OrderByを使います。
C#List<int> numbers = new List<int>
{
5, 2, 8, 1, 4
};
IEnumerable<int> sortedNumbers = numbers.OrderBy(number => number);
foreach (int number in sortedNumbers)
{
Console.WriteLine(number);
}
降順にする場合は、OrderByDescendingを使います。
C#IEnumerable<int> descendingNumbers =
numbers.OrderByDescending(number => number);
絞り込みと並び替えは組み合わせられます。
C#List<int> scores = new List<int>
{
55, 80, 72, 40, 95
};
List<int> results = scores
.Where(score => score >= 70)
.OrderByDescending(score => score)
.ToList();
foreach (int score in results)
{
Console.WriteLine(score);
}
7. メソッド・クラス・オブジェクト指向のC#サンプルプログラム
7-1. メソッドを定義して呼び出すサンプル
メソッドは、複数の処理をひとまとめにしたものです。同じ処理を何度も使う場合に、コードの重複を減らせます。
C#ShowMessage();
ShowMessage();
static void ShowMessage()
{
Console.WriteLine("C#を学習しています");
}
voidは、値を返さないメソッドであることを表します。
メソッド名には、その処理内容が分かる名前を付けましょう。
C#ShowCurrentTime();
static void ShowCurrentTime()
{
Console.WriteLine(DateTime.Now);
}
7-2. 引数と戻り値を使うサンプル
引数を使うと、メソッドへ値を渡せます。
C#Greet("佐藤");
Greet("鈴木");
static void Greet(string name)
{
Console.WriteLine($"こんにちは、{name}さん");
}
戻り値を使うと、メソッドで計算した結果を呼び出し元へ返せます。
C#int result = Add(10, 20);
Console.WriteLine(result);
static int Add(int a, int b)
{
return a + b;
}
static int Addのintは、戻り値の型です。returnに続けて、返したい値を記述します。
C#double average = CalculateAverage(80, 70, 90);
Console.WriteLine($"平均点:{average}");
static double CalculateAverage(int a, int b, int c)
{
return (a + b + c) / 3.0;
}
7-3. クラスを作成するサンプル
クラスは、関連するデータと処理をまとめるための設計図です。
C#class Person
{
public string Name = "";
public void Introduce()
{
Console.WriteLine($"私の名前は{Name}です");
}
}
このPersonクラスは、名前を保存するNameと、自己紹介を行うIntroduceメソッドを持っています。
クラスを定義しただけでは処理は実行されません。クラスからインスタンスを生成して利用します。
7-4. インスタンスを生成するサンプル
クラスを実際に利用するには、newを使ってインスタンスを生成します。
C#Person person = new Person();
person.Name = "田中";
person.Introduce();
class Person
{
public string Name = "";
public void Introduce()
{
Console.WriteLine($"私の名前は{Name}です");
}
}
同じクラスから複数のインスタンスを作成できます。
C#Person person1 = new Person();
person1.Name = "佐藤";
Person person2 = new Person();
person2.Name = "鈴木";
person1.Introduce();
person2.Introduce();
class Person
{
public string Name = "";
public void Introduce()
{
Console.WriteLine($"私の名前は{Name}です");
}
}
それぞれのインスタンスは、別々のデータを保持します。
7-5. プロパティを使うサンプル
プロパティは、クラスが持つデータを安全に読み書きするための仕組みです。
C#Product product = new Product();
product.Name = "キーボード";
product.Price = 5000;
Console.WriteLine($"{product.Name}:{product.Price}円");
class Product
{
public string Name { get; set; } = "";
public int Price { get; set; }
}
getは値の取得、setは値の設定を表します。
値に制限を加えることもできます。
C#Product product = new Product();
product.Price = -100;
Console.WriteLine(product.Price);
class Product
{
private int price;
public int Price
{
get
{
return price;
}
set
{
if (value >= 0)
{
price = value;
}
}
}
}
このサンプルでは、0未満の価格は設定されません。
7-6. コンストラクタを使うサンプル
コンストラクタは、インスタンスを生成するときに自動的に実行される特別な処理です。
C#Person person = new Person("山田", 28);
person.Introduce();
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public Person(string name, int age)
{
Name = name;
Age = age;
}
public void Introduce()
{
Console.WriteLine($"私は{Name}です。{Age}歳です。");
}
}
コンストラクタを使うと、インスタンスの生成時に必要な値を設定できます。
C#Person person1 = new Person("佐藤", 20);
Person person2 = new Person("鈴木", 35);
初期値の設定忘れを防ぎたい場合にも役立ちます。
7-7. 継承を使うサンプル
継承は、既存のクラスが持つ機能を別のクラスへ引き継ぐ仕組みです。
C#Dog dog = new Dog();
dog.Name = "ポチ";
dog.Eat();
dog.Bark();
class Animal
{
public string Name { get; set; } = "";
public void Eat()
{
Console.WriteLine($"{Name}が食事をしています");
}
}
class Dog : Animal
{
public void Bark()
{
Console.WriteLine($"{Name}がワンと鳴きました");
}
}
Dog : Animalと書くことで、DogクラスはAnimalクラスを継承します。
継承元を基底クラス、継承する側を派生クラスと呼びます。共通する処理を基底クラスへまとめることで、コードの重複を減らせます。
7-8. インターフェースを使うサンプル
インターフェースは、クラスが実装すべき機能の決まりを定義します。
C#IPrintable report = new Report();
report.Print();
interface IPrintable
{
void Print();
}
class Report : IPrintable
{
public void Print()
{
Console.WriteLine("レポートを印刷します");
}
}
Report : IPrintableと書くことで、ReportクラスがIPrintableインターフェースを実装します。
同じインターフェースを複数のクラスで実装できます。
C#List<IPrintable> items = new List<IPrintable>
{
new Report(),
new Invoice()
};
foreach (IPrintable item in items)
{
item.Print();
}
interface IPrintable
{
void Print();
}
class Report : IPrintable
{
public void Print()
{
Console.WriteLine("レポートを印刷します");
}
}
class Invoice : IPrintable
{
public void Print()
{
Console.WriteLine("請求書を印刷します");
}
}
8. 実践で使えるC#サンプルプログラム集
8-1. 電卓を作るサンプル
2つの数値と演算子を入力して計算する、簡単な電卓プログラムです。
C#Console.Write("1つ目の数値を入力してください:");
if (!double.TryParse(Console.ReadLine(), out double number1))
{
Console.WriteLine("数値を正しく入力してください");
return;
}
Console.Write("演算子を入力してください(+ - * /):");
string? operation = Console.ReadLine();
Console.Write("2つ目の数値を入力してください:");
if (!double.TryParse(Console.ReadLine(), out double number2))
{
Console.WriteLine("数値を正しく入力してください");
return;
}
double result;
switch (operation)
{
case "+":
result = number1 + number2;
break;
case "-":
result = number1 - number2;
break;
case "*":
result = number1 * number2;
break;
case "/":
if (number2 == 0)
{
Console.WriteLine("0で割ることはできません");
return;
}
result = number1 / number2;
break;
default:
Console.WriteLine("使用できない演算子です");
return;
}
Console.WriteLine($"計算結果:{result}");
このサンプルには、入力、数値変換、条件分岐、計算、エラー対策といった基本要素が含まれています。
8-2. ランダムな数を生成するサンプル
ランダムな整数を生成するには、Randomクラスを使います。
C#Random random = new Random();
int number = random.Next(1, 101);
Console.WriteLine($"1から100までのランダムな数:{number}");
Next(1, 101)では、1以上101未満の整数が生成されます。つまり、結果は1から100までです。
サイコロの数字を生成する場合は、次のように書けます。
C#Random random = new Random();
int dice = random.Next(1, 7);
Console.WriteLine($"サイコロの結果:{dice}");
8-3. じゃんけんゲームを作るサンプル
ユーザーとコンピューターが対戦する、簡単なじゃんけんゲームです。
C#string[] hands = { "グー", "チョキ", "パー" };
Console.WriteLine("じゃんけんを選んでください");
Console.WriteLine("0:グー");
Console.WriteLine("1:チョキ");
Console.WriteLine("2:パー");
if (!int.TryParse(Console.ReadLine(), out int player) ||
player < 0 ||
player > 2)
{
Console.WriteLine("0から2までの数字を入力してください");
return;
}
Random random = new Random();
int computer = random.Next(0, 3);
Console.WriteLine($"あなた:{hands[player]}");
Console.WriteLine($"コンピューター:{hands[computer]}");
if (player == computer)
{
Console.WriteLine("あいこです");
}
else if (
(player == 0 && computer == 1) ||
(player == 1 && computer == 2) ||
(player == 2 && computer == 0))
{
Console.WriteLine("あなたの勝ちです");
}
else
{
Console.WriteLine("あなたの負けです");
}
勝敗判定の条件を関数へ分離したり、繰り返し対戦できるようにしたりすると、さらに実践的なプログラムになります。
8-4. タイマーを作るサンプル
5秒間のカウントダウンを表示するサンプルです。
C#for (int i = 5; i >= 1; i--)
{
Console.WriteLine(i);
Thread.Sleep(1000);
}
Console.WriteLine("時間になりました");
Thread.Sleep(1000)は、処理を1000ミリ秒、つまり1秒間停止します。
非同期処理を使う場合は、次のように記述できます。
C#for (int i = 5; i >= 1; i--)
{
Console.WriteLine(i);
await Task.Delay(1000);
}
Console.WriteLine("時間になりました");
Task.Delayは、画面を持つアプリやWebアプリなどで、処理全体を止めずに待機したい場合にも利用されます。
8-5. 現在日時を表示するサンプル
現在の日付と時刻は、DateTime.Nowで取得できます。
C#DateTime now = DateTime.Now;
Console.WriteLine(now);
Console.WriteLine($"現在の日付:{now:yyyy年MM月dd日}");
Console.WriteLine($"現在の時刻:{now:HH時mm分ss秒}");
曜日も表示できます。
C#DateTime today = DateTime.Today;
Console.WriteLine($"今日は{today:yyyy年MM月dd日 dddd}です");
日時を計算することも可能です。
C#DateTime today = DateTime.Today;
DateTime tomorrow = today.AddDays(1);
DateTime nextWeek = today.AddDays(7);
Console.WriteLine($"今日:{today:yyyy/MM/dd}");
Console.WriteLine($"明日:{tomorrow:yyyy/MM/dd}");
Console.WriteLine($"1週間後:{nextWeek:yyyy/MM/dd}");
8-6. ファイルを読み込むサンプル
テキストファイル全体を読み込むには、File.ReadAllTextを使います。
C#string filePath = "sample.txt";
if (File.Exists(filePath))
{
string content = File.ReadAllText(filePath);
Console.WriteLine(content);
}
else
{
Console.WriteLine("ファイルが見つかりません");
}
ファイルを1行ずつ読み込む場合は、File.ReadAllLinesを使います。
C#string filePath = "sample.txt";
if (File.Exists(filePath))
{
string[] lines = File.ReadAllLines(filePath);
foreach (string line in lines)
{
Console.WriteLine(line);
}
}
else
{
Console.WriteLine("ファイルが見つかりません");
}
相対パスを指定した場合、実行時のカレントディレクトリを基準にファイルが検索されます。
8-7. ファイルに書き込むサンプル
テキストをファイルへ保存するには、File.WriteAllTextを使います。
C#string filePath = "output.txt";
string content = "C#でファイルに書き込みました。";
File.WriteAllText(filePath, content);
Console.WriteLine("ファイルを保存しました");
複数行を書き込む場合は、File.WriteAllLinesを使えます。
C#string[] lines =
{
"1行目",
"2行目",
"3行目"
};
File.WriteAllLines("output.txt", lines);
Console.WriteLine("複数行を保存しました");
既存のファイルへ内容を追加する場合は、File.AppendAllTextを使います。
C#File.AppendAllText(
"log.txt",
$"{DateTime.Now:yyyy-MM-dd HH:mm:ss} プログラムを実行しました{Environment.NewLine}"
);
8-8. CSVファイルを読み込むサンプル
次のようなusers.csvを読み込む例を考えます。
名前,年齢,住所
佐藤,25,東京
鈴木,30,大阪
高橋,28,福岡
C#で1行ずつ読み込み、カンマで分割します。
C#string filePath = "users.csv";
if (!File.Exists(filePath))
{
Console.WriteLine("CSVファイルが見つかりません");
return;
}
string[] lines = File.ReadAllLines(filePath);
foreach (string line in lines)
{
string[] columns = line.Split(',');
foreach (string column in columns)
{
Console.Write($"{column}\t");
}
Console.WriteLine();
}
見出し行を除外してデータだけを処理する場合は、Skip(1)を使えます。
C#string[] lines = File.ReadAllLines("users.csv");
foreach (string line in lines.Skip(1))
{
string[] columns = line.Split(',');
if (columns.Length >= 3)
{
string name = columns[0];
string age = columns[1];
string address = columns[2];
Console.WriteLine($"名前:{name}、年齢:{age}、住所:{address}");
}
}
単純なSplit(',')では、値の中にカンマや改行、ダブルクォーテーションを含む複雑なCSVを正しく処理できない場合があります。実務で本格的なCSVを扱う場合は、CSVの仕様に対応したライブラリの利用を検討しましょう。
9. エラー処理とデバッグに役立つC#サンプルプログラム
9-1. try-catchで例外処理をするサンプル
try-catchを使うと、プログラム実行中に例外が発生した場合の処理を記述できます。
C#try
{
Console.Write("数値を入力してください:");
int number = int.Parse(Console.ReadLine()!);
Console.WriteLine($"入力された数値:{number}");
}
catch (FormatException)
{
Console.WriteLine("数値の形式が正しくありません");
}
複数の例外を分けて処理することもできます。
C#try
{
Console.Write("割られる数を入力してください:");
int a = int.Parse(Console.ReadLine()!);
Console.Write("割る数を入力してください:");
int b = int.Parse(Console.ReadLine()!);
int result = a / b;
Console.WriteLine($"結果:{result}");
}
catch (FormatException)
{
Console.WriteLine("整数を入力してください");
}
catch (DivideByZeroException)
{
Console.WriteLine("0で割ることはできません");
}
例外をすべてcatchで隠すのではなく、入力チェックで防げる問題は事前に確認することも重要です。
9-2. finallyを使うサンプル
finallyは、例外が発生したかどうかに関係なく、最後に実行される処理です。
C#try
{
Console.WriteLine("処理を開始します");
int number = int.Parse("abc");
Console.WriteLine(number);
}
catch (FormatException)
{
Console.WriteLine("数値へ変換できませんでした");
}
finally
{
Console.WriteLine("処理を終了します");
}
実行結果は次のとおりです。
処理を開始します
数値へ変換できませんでした
処理を終了します
finallyは、ファイル、データベース接続、外部リソースなどの後片付けを確実に行いたい場合に利用されます。
9-3. 数値変換エラーを防ぐサンプル
ユーザー入力を数値へ変換する場合は、TryParseを使うと安全です。
C#Console.Write("整数を入力してください:");
string? input = Console.ReadLine();
if (int.TryParse(input, out int number))
{
Console.WriteLine($"2倍した値:{number * 2}");
}
else
{
Console.WriteLine("整数へ変換できませんでした");
}
TryParseは変換に成功するとtrue、失敗するとfalseを返します。変換に成功した値は、outで指定した変数へ格納されます。
小数を変換する場合は、double.TryParseを使います。
C#Console.Write("小数を入力してください:");
if (double.TryParse(Console.ReadLine(), out double number))
{
Console.WriteLine($"入力値:{number}");
}
else
{
Console.WriteLine("数値を正しく入力してください");
}
9-4. nullチェックを行うサンプル
nullは、値が存在しない状態を表します。
C#string? name = Console.ReadLine();
if (name != null)
{
Console.WriteLine($"入力内容:{name}");
}
else
{
Console.WriteLine("入力を取得できませんでした");
}
string.IsNullOrEmptyを使うと、nullまたは空文字をまとめて確認できます。
C#Console.Write("名前を入力してください:");
string? name = Console.ReadLine();
if (string.IsNullOrEmpty(name))
{
Console.WriteLine("名前が入力されていません");
}
else
{
Console.WriteLine($"こんにちは、{name}さん");
}
空白だけの入力も無効にする場合は、string.IsNullOrWhiteSpaceを使います。
C#if (string.IsNullOrWhiteSpace(name))
{
Console.WriteLine("名前を入力してください");
}
9-5. よくあるコンパイルエラーと解決方法
C#初心者が遭遇しやすいエラーには、いくつかの共通パターンがあります。
セミコロンの付け忘れ
C#int number = 10
Console.WriteLine(number);
正しくは、文の最後にセミコロンを付けます。
C#int number = 10;
Console.WriteLine(number);
変数名の大文字と小文字が違う
C#string name = "佐藤";
Console.WriteLine(Name);
nameとNameは別の名前です。
C#string name = "佐藤";
Console.WriteLine(name);
文字列をダブルクォーテーションで囲んでいない
C#Console.WriteLine(こんにちは);
正しくは次のとおりです。
C#Console.WriteLine("こんにちは");
型の異なる値を代入している
C#int age = "20";
文字列ではなく整数として代入します。
C#int age = 20;
波かっこの数が合っていない
C#if (score >= 60)
{
Console.WriteLine("合格");
開始した波かっこには、対応する閉じ波かっこが必要です。
C#if (score >= 60)
{
Console.WriteLine("合格");
}
エラーメッセージには、問題が見つかったファイル名、行番号、エラーコード、説明が表示されます。まずは最初に表示されたエラーから確認しましょう。1つの記述ミスが原因で、複数のエラーが表示されることもあります。
9-6. サンプルコードが動かないときの確認ポイント
C#サンプルプログラムが動かない場合は、次の項目を順番に確認してください。
コードを貼り付ける場所が正しいか
基本的なサンプルは、コンソールアプリのProgram.csへ貼り付けます。別の種類のプロジェクトへ貼り付けると、そのままでは動かない場合があります。
古いコードが残っていないか
別のサンプルコードや、同じ名前の変数、メソッド、クラスが残っているとエラーになることがあります。最初はProgram.csの内容を削除して、1つのサンプルだけを貼り付けましょう。
記号が全角になっていないか
セミコロン、丸かっこ、波かっこ、ダブルクォーテーションなどは半角で入力します。
大文字と小文字が一致しているか
Console.WriteLineをconsole.writelineと書くと動きません。
必要なファイルが存在するか
ファイル読み込みのサンプルでは、指定した場所に対象ファイルが必要です。ファイル名や拡張子も確認してください。
エラーが発生した行だけを見ていないか
エラーの原因が、その行より前にあることもあります。波かっこやセミコロンの不足がないか、直前のコードも確認します。
プロジェクトを保存したか
変更内容を保存してから、もう一度ビルドまたは実行します。
一度ビルドし直したか
ターミナルを使っている場合は、次のコマンドでエラー内容を確認できます。
Bashdotnet build
実行時の問題とコンパイル時の問題を分けて確認すると、原因を見つけやすくなります。
10. C#サンプルプログラムで初心者が効率よく学ぶコツ
10-1. コピペしたあとに変更して理解を深める
C#サンプルプログラムをコピーして実行するだけでも、最初の学習としては有効です。ただし、コピーしたままでは、コードを自力で書く力が身につきにくくなります。
サンプルを実行したあとは、少なくとも1か所を変更してみましょう。
たとえば、次のコードがあるとします。
C#int score = 70;
if (score >= 60)
{
Console.WriteLine("合格");
}
次のような変更を試せます。
scoreを50や100に変える合格点を60から80に変える
不合格の場合の
elseを追加するユーザーが点数を入力できるようにする
0から100までの範囲チェックを追加する
コードを変更し、実行結果を予想してから動かすと、理解が深まります。
10-2. 変数名や条件を変えて実験する
変数名には、そのデータが何を表しているのか分かる名前を付けましょう。
次の名前では、用途が分かりにくくなります。
C#int a = 1000;
int b = 3;
int c = a * b;
次のようにすると、処理内容を把握しやすくなります。
C#int unitPrice = 1000;
int quantity = 3;
int totalPrice = unitPrice * quantity;
条件式も変更して実験します。
C#if (age >= 18)
この条件を次のように変えると、判定の意味が変わります。
C#if (age >= 20)
複数条件にも発展できます。
C#if (age >= 18 && hasPermission)
小さな変更を繰り返すことで、構文を暗記するのではなく、使い方を理解できるようになります。
10-3. 基本文法から実践例へ進む学習順序
初心者は、次の順序でC#を学ぶと理解しやすくなります。
文字の表示
変数とデータ型
四則演算
ユーザー入力
条件分岐
繰り返し処理
配列とList
メソッド
クラスとインスタンス
例外処理
ファイル操作
データベースやWeb開発
最初から大規模なゲームやWebアプリを作ろうとすると、文法、開発環境、画面設計、データ管理などを同時に覚える必要があります。
まずは短いコンソールアプリで基本文法を学び、その後に電卓やじゃんけんゲームなどの小さな作品へ進みましょう。
10-4. 練習問題を作って自分で書いてみる
サンプルを理解できたら、コードを見ずに同じ機能を作ってみます。
初心者向けの練習問題には、次のようなものがあります。
2つの数値を入力して大きいほうを表示する
1から100までの合計を求める
入力された数値が3の倍数か判定する
配列の最大値と最小値を求める
Listから指定した名前を検索する
商品価格と個数から合計金額を計算する
パスワードが一致するまで入力を繰り返す
じゃんけんを3回行い、勝った回数を数える
入力内容をテキストファイルへ保存する
CSVデータを読み込み、条件に合う行だけを表示する
最初から完璧に書けなくても問題ありません。分からない部分だけサンプルを確認し、自分のコードへ反映させます。
10-5. 次に学ぶべきC#の応用分野
基本的なC#サンプルプログラムを理解したら、作りたいものに応じて次の分野へ進みます。
Webアプリ開発
ASP.NET Coreを学び、WebサイトやWeb APIを作成します。HTTP、HTML、CSS、JavaScript、データベースの知識も必要になります。
デスクトップアプリ開発
Windows向けの画面を持つアプリを作成します。イベント処理、画面設計、データバインディングなどを学びます。
ゲーム開発
Unityを利用し、C#でゲームの動きを記述します。座標、ベクトル、当たり判定、物理演算などの知識も役立ちます。
データベース連携
SQLやEntity Framework Coreを学び、データの登録、検索、更新、削除を行います。
非同期処理
asyncとawaitを学び、ファイル操作、通信処理、待機処理などを効率的に実行します。
自動テスト
メソッドやクラスが正しく動くことを確認するテストコードを作成します。実務では、機能追加や修正による不具合を防ぐために重要です。
11. C#サンプルプログラムに関するよくある質問
11-1. C#初心者はどのサンプルから始めるべき?
最初は、文字を表示するサンプルから始めましょう。
C#Console.WriteLine("こんにちは");
次に、変数、計算、ユーザー入力へ進みます。
C#Console.Write("名前を入力してください:");
string? name = Console.ReadLine();
Console.WriteLine($"こんにちは、{name}さん");
その後、if文、for文、配列、メソッドの順番で学ぶと理解しやすくなります。
いきなり長いプログラムを選ぶのではなく、10行から30行程度の短いC#サンプルプログラムを繰り返し実行することが大切です。
11-2. C#のサンプルコードはそのまま使ってもよい?
学習用として公開されているサンプルコードは、利用条件の範囲内で使う必要があります。
自分で作成したコードや、利用を許可されたサンプルであれば、用途に合わせて変更できます。ただし、Webサイト、書籍、GitHubなどから取得したコードには、著作権やライセンスが設定されている場合があります。
実務で利用するときは、次の点を確認してください。
商用利用が許可されているか
改変や再配布が許可されているか
著作権表示が必要か
使用しているライブラリのライセンスに問題がないか
セキュリティ上の問題がないか
エラー処理や入力チェックが十分か
サンプルコードは、仕組みを説明するために処理を簡略化している場合があります。そのまま本番環境で利用せず、要件に合わせてテストと修正を行いましょう。
11-3. Visual StudioとVisual Studio Codeはどちらがよい?
C#を初めて学ぶ方には、必要な機能がまとまっているVisual Studioが使いやすいでしょう。プロジェクト作成、入力補完、デバッグ、エラー確認を画面上で操作できます。
Visual Studio Codeは軽量で、複数のOSで使いやすい点がメリットです。ただし、.NET SDKや拡張機能の準備、ターミナル操作が必要になります。
選び方の目安は次のとおりです。
環境設定で迷いたくない:Visual Studio
Windowsで本格的なC#開発をしたい:Visual Studio
軽量なエディターを使いたい:Visual Studio Code
macOSやLinuxで学びたい:Visual Studio Code
コマンド操作にも慣れたい:Visual Studio Code
どちらを使ってもC#の基本文法は同じです。最初は使いやすいほうを選びましょう。
11-4. C#とJavaのサンプルプログラムは似ている?
C#とJavaは、構文が似ている部分の多いプログラミング言語です。
たとえば、C#のif文は次のように書きます。
C#if (score >= 60)
{
Console.WriteLine("合格");
}
Javaでも、条件分岐の基本構造はよく似ています。
変数、条件分岐、繰り返し、クラス、継承、インターフェースといった考え方にも共通点があります。そのため、どちらか一方を学んだ経験があると、もう一方の学習にも役立ちます。
ただし、標準ライブラリ、プロパティ、イベント、非同期処理、実行環境、開発ツールなどには違いがあります。見た目が似ていても、コードをそのままコピーして動かせるとは限りません。
11-5. UnityでもC#の基本文法は使える?
Unityでも、変数、if文、for文、配列、List、メソッド、クラスなど、C#の基本文法を利用できます。
たとえば、プレイヤーの得点を判定する処理は、通常のC#と同じ考え方で記述できます。
C#int score = 100;
if (score >= 100)
{
Console.WriteLine("ステージクリア");
}
ただし、Unityでは一般的に、Console.WriteLineではなくDebug.Logを使ってログを表示します。
C#Debug.Log("ステージクリア");
また、Unity独自のクラスやメソッドも使用します。
MonoBehaviourStartUpdateGameObjectTransformVector3RigidbodyCollider
C#の基本文法を先に学んでおくと、Unity固有の仕組みを理解しやすくなります。
11-6. 実務で使えるC#サンプルを学ぶには何をすべき?
実務を意識する場合は、基本文法だけでなく、複数の機能を組み合わせたプログラムを作成します。
たとえば、次のような課題が練習になります。
商品データをListで管理する
商品名や価格で検索する
CSVファイルから商品を読み込む
入力内容を検証する
エラー内容をログファイルへ保存する
データベースへ登録する
Web APIからデータを取得する
テストコードを書く
また、実務では次の知識も重要です。
命名規則
クラス設計
例外処理
nullへの対応
非同期処理
LINQ
SQLとデータベース
Gitによるバージョン管理
単体テスト
セキュリティ
ログ出力
設定ファイルの管理
短いC#サンプルプログラムで文法を覚えたあと、複数のクラスやファイルを使う小規模なアプリを完成させると、実務に近い開発の流れを学べます。
まとめ
C#の基本文法は、実際に動くサンプルプログラムを使うことで効率よく学べます。
まずは、Console.WriteLineによる文字の表示から始め、変数、計算、ユーザー入力、条件分岐、繰り返し処理へ進みましょう。その後、配列、List、Dictionary、LINQ、メソッド、クラス、例外処理、ファイル操作を学ぶと、作れるプログラムの幅が広がります。
C#サンプルプログラムを活用するときは、コピーして実行するだけで終わらせないことが大切です。変数の値、条件、表示内容、繰り返し回数などを変更し、実行結果がどのように変わるか確認してください。
基本を理解したあとは、電卓、じゃんけんゲーム、CSV管理ツールなどの小さな作品を自分で作ってみましょう。短いサンプルの積み重ねが、Webアプリ、ゲーム、業務システムなどを開発するための土台になります。

