Skip to content

第1章 初めてのC#プログラミング

この章では、Visual Studio 2022 を使って、初めての C# コンソールアプリを作成します。

C# の文法を本格的に学ぶ前に、まずは次の流れを体験します。

プロジェクトを作成する
C#のコードを書く
プログラムを実行する
実行結果を確認する
エラーがあれば修正する

この章の目的は、C# を完璧に理解することではありません。

まずは、Visual Studio 2022 で C# プログラムを作成し、実行できるようになること を目指します。


この章でできるようになること

Section titled “この章でできるようになること”

この章を終えると、次のことができるようになります。

  • Visual Studio 2022 で C# のコンソールアプリを作成できる
  • ”.NET 8” を対象にしたプロジェクトを作成できる
  • ソリューションとプロジェクトの違いをおおまかに説明できる
  • Program.cs を編集できる
  • class ProgramMain メソッドの役割をおおまかに説明できる
  • Console.WriteLine を使って文字を表示できる
  • Console.WriteConsole.WriteLine の違いを説明できる
  • 簡単な数値計算の結果を表示できる
  • よくある入力ミスやエラーを確認できる

項目内容
開発環境Visual Studio 2022
プロジェクト種類コンソール アプリ
対象フレームワーク.NET 8
言語”C#“
ソリューション名Chapter01
プロジェクト名Ch01_FirstCSharp

本研修で使用するコード形式について

本研修では、C# のプログラム構造を理解しやすくするため、class Programstatic void Main() を明示する形式で学習します。

Visual Studio 2022 のテンプレートでは、短く書ける形式のコードが自動生成される場合があります。しかし、本研修では、クラス、メソッド、プログラムの開始地点を意識するため、あえて省略しない書き方を使用します。

この書き方に慣れておくと、既存システムのコードを読むときや、Java など他の言語を学習するときにも役立ちます。


Visual Studio 2022 でのプロジェクト作成手順は、付録B「VS2022 の基本操作」 に詳しく記載しています。

この章で初めてプロジェクトを作成する場合は、先に付録B を参照してください。

ここでは、本章で作成するプロジェクトの 設定値 だけを示します。

この章で作成するプロジェクト

Section titled “この章で作成するプロジェクト”
項目
プロジェクトテンプレートコンソール アプリ(C#、.NET)
プロジェクト名Ch01_FirstCSharp
ソリューション名Chapter01
対象フレームワーク.NET 8.0
最上位レベルのステートメント使用しない(チェックを入れる)

補足:ソリューション名とプロジェクト名を分ける

本研修では、ソリューション名は Chapter01、プロジェクト名は Ch01_FirstCSharp のように 別の名前 にします。

Visual Studio の新規作成画面で「ソリューション名」欄を Chapter01 に変更してください。

詳しい手順は 付録B「VS2022 の準備と基本操作」 を参照してください。

注意:コンソール アプリ (.NET Framework) というテンプレートは使用しません

似た名前のテンプレートがありますが、本研修では .NET の方を使います。


プロジェクトを作成したら、Ch01_FirstCSharp.csproj をダブルクリックして開きます。

次のような内容が表示されます。

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>

<Nullable>enable</Nullable> の行を、次のように変更します。

変更前

<Nullable>enable</Nullable>

変更後

<Nullable>disable</Nullable>

変更したら、Ctrl + S で保存し、csproj のタブを閉じてください。

補足:Nullable とは

Nullable は、変数に「値が入っていないかもしれない」状態を厳密にチェックする機能です。 便利な機能ですが、最初は警告が出やすく、学習の妨げになることがあります。

本研修では、まず C# の基本に集中するため、この機能を無効にしています。 後の章で改めて学習します。

図1-1 csproj の Nullable 設定変更


ソリューションとプロジェクト

Section titled “ソリューションとプロジェクト”

Visual Studio では、次の 2 つの言葉がよく出てきます。

用語意味
ソリューション複数のプロジェクトをまとめる入れ物
プロジェクト1 つのアプリケーションや部品を作る単位

最初は、次のように考えてください。

ソリューション
└─ プロジェクト
└─ C#のソースコード

今回作るような小さなコンソールアプリでは、1 つのソリューションの中に 1 つのプロジェクトだけが入ります。

実際の開発では、1 つのソリューションの中に複数のプロジェクトが入ることがあります。

例:

EmployeeManagement.sln
├─ EmployeeManagement.Web
├─ EmployeeManagement.Desktop
└─ EmployeeManagement.Common

今の段階では、次の理解で十分です。

ソリューションは全体の入れ物
プロジェクトは実際のアプリを作る単位

プロジェクトを作成すると、ソリューションエクスプローラーに次のファイルが表示されます。

Program.cs

Program.cs は、最初に編集する C# のソースコードファイルです。

ダブルクリックして開いてください。

図1-2 ソリューションエクスプローラーと Program.cs


Program.cs には、Visual Studio のテンプレートが生成したコード(例:Console.WriteLine("Hello, World!"); の 1 行など)が最初から書かれています。

エディター上で すべてを選択して削除(Ctrl + ADelete)してから、次のコードを入力してください。

Program.cs
namespace Ch01_FirstCSharp
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("C#研修を開始します。");
Console.WriteLine("Visual Studio 2022でプログラムを実行しました。");
}
}
}

入力できたら、Ctrl + S で保存します。

補足:以降の節でも「次のコードに置き換えてください」と出てきます

1-4・1-5 でも同じく Program.cs を別のコードに差し替えていきます。そのときも本節と同じく エディター上のコードを全部消してから入力 してください。1 ファイルに 1 つの class Program だけを置く、という形で進めます。


次のいずれかの方法で実行します。

F5 キーを押す

または、

画面上部の開始ボタンをクリックする

図1-3 実行ボタンの位置

実行すると、コンソール画面に次のように表示されます。

C#研修を開始します。
Visual Studio 2022でプログラムを実行しました。

図1-4 コンソールの実行結果

実行できましたか?

ここまでで、初めての C# プログラムを作成し、実行することができました。


1-3 入力したコードを理解する

Section titled “1-3 入力したコードを理解する”

ここで、入力したコードを少しずつ見ていきます。

最初のうちは、すべてを完全に理解できなくても構いません。

Program.cs
namespace Ch01_FirstCSharp
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("C#研修を開始します。");
Console.WriteLine("Visual Studio 2022でプログラムを実行しました。");
}
}
}

このコードは、次のような構造になっています。

namespace のまとまり
└─ class のまとまり
└─ Main メソッドのまとまり
└─ Console.WriteLine の命令

namespace Ch01_FirstCSharp

namespace は、クラスなどを整理するための名前のまとまりです。

ここでは、Ch01_FirstCSharp という名前空間の中に、プログラムのコードが書かれています。

namespace については後の章で詳しく学びます。

この章では、次のように理解してください。

namespace は、プログラムを整理するための大きな入れ物

なお、Ch01_FirstCSharp の部分は、プロジェクト名によって変わります。


internal class Program
{
}

class Program は、Program という名前のクラスを定義しています。

クラスについては後の章で詳しく学びます。

この章では、次のように理解してください。

class Program は、C#の処理をまとめる入れ物

C# では、多くの処理をクラスの中に書きます。

先頭にある internal は、クラスの利用範囲を表す指定です。今は詳しく理解しなくても問題ありません。


static void Main(string[] args)
{
}

Main は、プログラムを実行したときに 最初に呼び出される特別なメソッド です。

メソッドとは、処理をまとめたものです。

この章では、次のように理解してください。

Main メソッドは、プログラムの開始地点

staticvoidstring[] args の詳しい意味は、後の章で学びます。

今は、C# のコンソールアプリでは、Main の中に最初に実行したい処理を書く、と理解しておきましょう。


Console.WriteLine("C#研修を開始します。");

これは、コンソール画面に文字を表示する命令です。

" で囲まれた部分が表示されます。

Console.WriteLineLine は「行」を意味します。

つまり、Console.WriteLine は「コンソールに 1 行表示する」と考えるとよいです。


Console.WriteLine("C#研修を開始します。");

C# では、多くの命令の最後に ; を付けます。

セミコロンは、「この命令はここで終わりです」という目印です。


教材や書籍によっては、コードの先頭に次のような記述があることがあります。

using System;

using は、Console のような機能を短い名前で使うための宣言です。

しかし、Visual Studio 2022 で作成した .NET 8 のプロジェクトでは、using System; を書かなくても Console.WriteLine を使えるようになっています。

これは「暗黙的 using」と呼ばれる仕組みで、よく使う機能を自動的に有効にしてくれます。

そのため、本研修のサンプルコードでは、原則として using System; を書きません。

using の詳しい使い方は、後の章で改めて学習します。


C# でコンソールに文字を表示する命令には、2 種類あります。

命令動作
Console.WriteLine文字を表示して、改行する
Console.Write文字を表示するだけ。改行しない

Program.cs を、次のコードに置き換えて実行してください。

Program.cs
namespace Ch01_FirstCSharp
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("WriteLine その1");
Console.WriteLine("WriteLine その2");
Console.Write("Write その1");
Console.Write("Write その2");
}
}
}

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

WriteLine その1
WriteLine その2
Write その1Write その2

Console.WriteLine は、表示した後に改行が入ります。

Console.Write は、改行が入らないため、続きの表示がそのまま横につながります。

使い分けの目安

「○○さん、こんにちは」のように、入力プロンプトと結果を 1 行にまとめたいときは Console.Write を使うことがあります。

通常は Console.WriteLine で十分です。


C# では、数値の計算もできます。

Program.cs を次のように変更してください。

Program.cs
namespace Ch01_FirstCSharp
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine(100 + 5);
Console.WriteLine(100 - 5);
Console.WriteLine(100 * 5);
Console.WriteLine(100 / 5);
}
}
}

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

105
95
500
20

数値の計算に使う記号を、算術演算子と呼びます。

演算子意味結果
+足し算100 + 5105
-引き算100 - 595
*掛け算100 * 5500
/割り算100 / 520

掛け算は × ではなく * を使います。

割り算は ÷ ではなく / を使います。


次の 2 つを比べてください。

Console.WriteLine(100 + 5);
Console.WriteLine("100 + 5");

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

105
100 + 5

1 行目は、数値として計算されます。

2 行目は、" で囲まれているため、文字列としてそのまま表示されます。

コード実行結果理由
Console.WriteLine(100 + 5);105数値として計算される
Console.WriteLine("100 + 5");100 + 5文字列としてそのまま表示される

この違いは、今後とても重要になります。


C# では、算数と同じように、掛け算や割り算が先に計算されます。

Console.WriteLine(10 + 2 * 3);

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

16

2 * 3 が先に計算されるためです。

先に足し算をしたい場合は、丸かっこを使います。

Console.WriteLine((10 + 2) * 3);

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

36

C# では、整数同士の割り算は 整数のまま で計算されます。

Console.WriteLine(10 / 3);
Console.WriteLine(10 / 4);

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

3
2

10 / 3 は本来 3.333… ですが、整数同士の計算では小数部分が切り捨てられます。

小数を含む計算は、第 2 章以降で詳しく学習します。


数値で使った + は、文字列でも使えます。

Console.WriteLine("こんにちは、" + "山田二郎" + "さん");

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

こんにちは、山田二郎さん

文字列を + でつなぐことを、文字列の連結 と呼びます。

文字列の連結は、第 2 章でも詳しく扱います。


1-6 コードを入力するうえでの注意点

Section titled “1-6 コードを入力するうえでの注意点”

C# では、大文字と小文字を区別します。

次のコードは正しく動作します。

Console.WriteLine("正しく表示されます。");

一方、次のコードはエラーになります。

console.writeline("エラーになります。");

ConsoleWriteLine の大文字・小文字が正しくないためです。


C# では、多くの命令の最後に ; を書きます。

正しい例:

Console.WriteLine("セミコロンがあります。");

エラーになる例:

Console.WriteLine("セミコロンがありません。")

セミコロンを忘れると、ビルドエラーになります。


プログラムでは、記号は基本的に半角で入力します。

特に、次の記号は間違いやすいです。

正しい半角間違いやすい全角
"“ ”
;
(
)
{
}

日本語入力が ON になっていると、全角記号が入力されることがあります。

コードを書くときは、基本的に英数字入力に切り替えてください。


C# では、{} の対応が重要です。

Program.cs
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("かっこの対応を確認します。");
}
}

このコードには、次のまとまりがあります。

class Program のまとまり
└─ Main メソッドのまとまり
└─ Console.WriteLine の命令

{ を書いたら、対応する } が必要です。

Visual Studio では、対応するかっこを強調表示してくれます。


インデントとは、行の先頭に空白を入れて、コードの構造を見やすくすることです。

読みやすい例:

Program.cs
namespace Ch01_FirstCSharp
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("読みやすいコードです。");
}
}
}

読みにくい例:

Program.cs
namespace Ch01_FirstCSharp
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("読みにくいコードです。");
}
}
}

どちらも動作はします。しかし、読みやすさが大きく違います。

プログラムは、自分だけでなく他の人も読みます。

そのため、読みやすい形で書くことが大切です。


Visual Studio には、コードを自動的に整える機能があります。

次のショートカットを使います。

Ctrl + K を押したあと、Ctrl + D

この操作を行うと、ファイル全体のインデントが整えられます。

うまく整形できない場合、かっこの対応が崩れている可能性があります。

Visual Studio のショートカットキーは、付録D「VS2022 ショートカットキー、入力効率化」 にまとめています。


C# では、// から行末までがコメントになります。

// 画面にメッセージを表示する
Console.WriteLine("C#研修を開始します。");

コメントは、プログラムの動作には影響しません。

コードの意味や意図を説明するために使います。


複数行にわたるコメントは、/**/ で囲みます。

/*
ここから複数行のコメントです。
プログラムの動作には影響しません。
*/
Console.WriteLine("メッセージを表示");

すべての行にコメントを書く必要はありません。

次のような場面で使うと効果的です。

  • コードの意図や目的を説明したいとき
  • 後で見直したい箇所に印を付けたいとき
  • 一時的にコードを実行から外したいとき(コードをコメントにする)

この章でよくあるつまずきを確認します。

つまずき原因対応
コンソールアプリが作れないテンプレート選択を間違えている”C#” の “コンソール アプリ” を選び直す
フレームワークが違う”.NET Framework” を選んでいる”.NET 8.0” を選択する
Program.cs が見つからないソリューションエクスプローラーを見ていない右側のソリューションエクスプローラーを確認する
実行しても思った結果にならない保存していないCtrl + S で保存してから実行する
Console に赤い波線が出る大文字小文字の誤りConsole.WriteLine の綴りを確認する
セミコロンのエラーが出る行末の ; がない命令の最後に ; を付ける
かっこのエラーが出る{} の対応が崩れているCtrl + KCtrl + D で整形し、対応を確認する
「最上位レベルのステートメントを使用しない」を見逃したプロジェクト作成時のチェックを忘れた新しくプロジェクトを作り直す
警告がたくさん出るcsproj の Nullable を変更していないcsproj を開いて <Nullable>disable</Nullable> に変更する

Visual Studio や Git で発生するエラーへの対応は、付録E「トラブルシューティング」 にまとめています。


次の項目について、自分で説明できるか確認してください。

  • Visual Studio 2022 で新しいプロジェクトを作成できる
  • ”.NET 8.0” を選択できる
  • csproj の Nullable を disable に変更できる
  • ソリューションとプロジェクトの違いを説明できる
  • Program.cs が何のためのファイルか説明できる
  • class Program が何を表しているか、おおまかに説明できる
  • Main メソッドがプログラムの開始地点であることを説明できる
  • Console.WriteLine を使って文字を表示できる
  • Console.WriteConsole.WriteLine の違いを説明できる
  • C# で簡単な数値計算を表示できる
  • 整数同士の割り算で小数部分が切り捨てられることを説明できる
  • 文字列を + で連結できる
  • コード内の全角記号に注意できる
  • コメントを書ける

次の内容を、自分の言葉で説明してください。

  1. Console.WriteLine は何をする命令ですか。
  2. Main メソッドは何のためにありますか。
  3. ソリューションとプロジェクトの違いは何ですか。
  4. C# で大文字と小文字を間違えるとどうなりますか。
  5. Console.WriteConsole.WriteLine の違いは何ですか。

説明するときは、完全な答えでなくても構いません。

自分の言葉で説明しようとすることが大切です。


この章の演習課題に取り組みます。

制限時間は 30 分 です。

演習の進め方の詳細は、付録A「演習の進め方」 を参照してください。

提出方法の詳細は、付録C「Git のインストールと提出ルール」 を参照してください。


第 1 章では、課題ごとにプロジェクトを分けて作成します

1 つのソリューション Kadai01 の中に、課題ごとのプロジェクトを並べて作成します。

Kadai01/ ← 課題用ソリューション
Kadai01.sln
Kd01_01_SelfIntroduction/ ← 課題1-1 のプロジェクト
Program.cs
Kd01_02_Calculation/ ← 課題1-2 のプロジェクト
Program.cs
Kd01_03_StringVsNumber/ ← 課題1-3 のプロジェクト(発展)
Program.cs
Kd01_04_TrainingMessage/ ← 課題1-4 のプロジェクト(発展)
Program.cs

各課題のプロジェクト名は次の通りです。

課題プロジェクト名
課題 1-1Kd01_01_SelfIntroduction
課題 1-2Kd01_02_Calculation
課題 1-3(発展)Kd01_03_StringVsNumber
課題 1-4(発展)Kd01_04_TrainingMessage

補足:ソリューションに複数のプロジェクトを追加する方法

最初の課題で Kadai01 ソリューションと Kd01_01_SelfIntroduction プロジェクトを同時に作成します。

2 つ目以降の課題は、ソリューションエクスプローラーで Kadai01 を右クリックし、追加新しいプロジェクト から追加します。

詳しい手順は 付録B「VS2022 の準備と基本操作」 を参照してください。

補足:なぜ課題ごとにプロジェクトを分けるのか

各課題を独立したプロジェクトにしておくと、課題ごとに動作確認・提出・振り返りがしやすくなります。

また、後の章で複数のプロジェクトを扱うときの練習にもなります。


以下は、本章のすべての課題に共通する作業です。各課題の本文には繰り返し書きません。

作業内容参照
プロジェクト作成時の設定最上位レベルのステートメントを使用しない」にチェック1-1
csproj の編集<Nullable>disable</Nullable> に変更1-1
コードを書く場所Main メソッドの中(本章 1-2 のコード形式と同じ)1-2
ファイルを保存して実行Ctrl + S で保存 → F5 で実行1-2

特に 2 つ目以降のプロジェクト(Kd01_02_Calculation など)も、新規追加するたびに csproj の Nullable を disable に変更する 必要があります。忘れると警告が出やすくなります。

演習課題のコードは、本文と同じ namespace + class Program + Main の枠組みの中に書きます。課題 1-3・1-4 でコード断片(例:Console.WriteLine(50 + 20);)だけを示している場合は、その断片を Main メソッドの中 に置いてください。


まずは、全員が必須課題に取り組んでください。


プロジェクト名: Kd01_01_SelfIntroduction

次のような内容を表示するプログラムを作成してください。

私の名前は山田二郎です。
C#の学習を始めました。
Visual Studio 2022を使っています。

ただし、名前は自分の名前に変更してください。

条件:

  • Console.WriteLine を使って表示する
  • 3 行以上表示する

プロジェクト名: Kd01_02_Calculation

次の計算結果を表示してください。

120 + 30
120 - 30
120 * 30
120 / 30

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

150
90
3600
4

条件:

  • 数値を文字列ではなく、計算式として記述する
  • Console.WriteLine を使って表示する

必須課題が終わった人は、発展課題に取り組んでください。


課題 1-3 文字列と計算の違いを確認する

Section titled “課題 1-3 文字列と計算の違いを確認する”

プロジェクト名: Kd01_03_StringVsNumber

次の 2 つを両方表示してください。

Console.WriteLine(50 + 20);
Console.WriteLine("50 + 20");

実行結果を確認し、なぜ違う結果になるのかをコメントに書いてください。

条件:

  • 2 つの表示結果の違いを確認する
  • 違いについて、コード内のコメントで説明する

コメント例:

// 50 + 20 は計算式として扱われる
// "50 + 20" は文字列として扱われる

課題 1-4 研修開始メッセージアプリ

Section titled “課題 1-4 研修開始メッセージアプリ”

プロジェクト名: Kd01_04_TrainingMessage

次の条件を満たすプログラムを作成してください。

条件:

  • 5 行以上のメッセージを表示する
  • 文字列の表示を 3 回以上使う
  • 数値計算の表示を 2 回以上使う
  • 文字列の連結(+)を 1 回以上使う
  • コメントを 1 行以上書く

実行結果例:

C#研修へようこそ。
このアプリは第1章の発展課題です。
今日の学習内容は、表示と計算です。
100 + 25 の結果:
125
50 * 4 の結果:
200
山田二郎さん、おつかれさまでした。

実行結果は完全に同じでなくても構いません。

条件を満たすように作成してください。


提出前に、次の項目を確認してください。

  • プログラムを Visual Studio から実行できる
  • Console.WriteLine を使って文字を表示している
  • 数値計算の結果を表示している
  • セミコロンの付け忘れがない
  • 全角記号が混ざっていない
  • インデントが整っている
  • エラーが残っていない、または未解決箇所を説明できる
  • 取り組んだ課題のプロジェクトが Kadai01 ソリューションに含まれている

提出手順は 付録C「Git のインストールと提出ルール」 を参照してください。

研修初日(第 1 章)は「初回セットアップ」から

本日が研修初日の方は、提出の前に 付録 C-2「初回セットアップ」の 6 ステップを 1 回だけ 実施してください。

  • [1] git --version の確認
  • [2] user.name / user.email / init.defaultBranch=main を設定
  • [3] git config --global --add safe.directory *(共有ドライブの所有権チェック許可)
  • [4] C:\Training\CSharp.gitignore を配置
  • [5] git init + git remote add origin z:\CSharp\<社員番号_名前>.git(Z: マウント環境の場合)
  • [6] 初回 git add .git commit -m "初期設定の完了"git push -u origin main

セットアップが終わったら、第 1 章の課題を 付録 C-1 の 3 コマンド で提出します。コミットメッセージは規約に従って次のように書きます。

Terminal window
git add .
git commit -m "Chapter01 初めてのC#プログラミング"
git push

この章では、Visual Studio 2022 を使って、初めての C# コンソールアプリを作成しました。

この章で学んだ主な内容は次の通りです。

  • C# では Console.WriteLine を使って文字や数値を表示できる
  • Console.Write は改行しない表示
  • Visual Studio 2022 では、ソリューションとプロジェクトを使ってプログラムを管理する
  • 本研修では .NET 8 を使用する
  • csproj の Nullable は disable に変更する
  • Program.cs は C# のソースコードを書くファイルである
  • class Program は処理をまとめるクラスである
  • Main メソッドはプログラムの開始地点である
  • .NET 8 では暗黙的 using により using System; を書かなくても Console.WriteLine が使える
  • C# では数値計算もできる
  • 整数同士の割り算では小数部分が切り捨てられる
  • 文字列は + で連結できる
  • 大文字小文字、セミコロン、かっこの対応、全角記号に注意する

次章では、変数 を学習します。

変数を使うと、数値や文字列を一時的に保存し、後の処理で利用できるようになります。