第9章 クラスを使いこなそう
この章の目的
Section titled “この章の目的”この章では、.NETに用意されている便利なクラスや構造体を利用し、C#の標準機能を使いこなす練習をします。
第7章では、自分で Employee クラスや Sale クラスを作成しました。
第8章では、DateTime.Now、Math.Max、静的クラスなどを通じて、クラス名から直接呼び出せる機能について学習しました。
この章では、C#や.NETがあらかじめ用意している代表的な機能を使います。
名前空間StringクラスMathクラスDateTime構造体Fileクラス実際の開発では、自分でクラスを作るだけでなく、.NETが用意しているクラスを調べて使う力も重要です。
たとえば、次のような処理は自分で一から作る必要はありません。
文字列の長さを調べる文字列に特定の文字が含まれるか調べる小数を四捨五入する大きい値・小さい値を求める現在の日付を取得する日付を指定した形式で表示するテキストファイルを書き込むテキストファイルを読み込むこれらは、.NETが用意しているクラスやメソッドを利用することで実現できます。
この章でできるようになること
Section titled “この章でできるようになること”この章を終えると、次のことができるようになります。
- 名前空間の役割をおおまかに説明できる
usingディレクティブの役割を説明できる- 同じクラス名でも名前空間が違えば区別できることを説明できる
stringの代表的なプロパティやメソッドを使えるLength、Contains、Replace、Substringなどを使えるMathクラスの代表的な静的メソッドを使えるMath.Round、Math.Max、Math.Min、Math.Absを使えるDateTime構造体で日付や時刻を扱えるDateTime.Now、DateTime.Today、AddDaysなどを使える- 日付を指定した形式の文字列に変換できる
Fileクラスを使ってテキストファイルを書き込めるFileクラスを使ってテキストファイルを読み込める- 標準クラスを調べながら使う姿勢を身に付ける
本章で使用する環境
Section titled “本章で使用する環境”| 項目 | 内容 |
|---|---|
| 開発環境 | Visual Studio 2022 |
| プロジェクト種類 | コンソール アプリ |
| 対象フレームワーク | .NET 8 |
| プロジェクト名 | Chapter09_UsefulClasses |
作業前チェック
Section titled “作業前チェック”作業を始める前に、次の内容を確認してください。
- Visual Studio 2022でコンソールアプリを作成できる
-
.NET 8.0を選択できる -
using System;の役割をおおまかに説明できる - プロパティとメソッドの違いをおおまかに説明できる
- 静的メソッドとインスタンスメソッドの違いをおおまかに説明できる
- 文字列補間を使って表示できる
- 第8章の内容をGitに提出済みである
9-1 名前空間
Section titled “9-1 名前空間”名前空間とは
Section titled “名前空間とは”名前空間とは、クラスを分類するための入れ物です。
C#では、多くのクラスが名前空間の中に分類されています。
たとえば、これまで何度も使ってきた Console クラスは、System 名前空間に含まれています。
System.Console.WriteLine("こんにちは");しかし、毎回 System.Console.WriteLine と書くのは長くなります。
そこで、先頭に次のように書きます。
using System;すると、次のように短く書けます。
Console.WriteLine("こんにちは");usingディレクティブの役割
Section titled “usingディレクティブの役割”using ディレクティブは、名前空間を省略して書けるようにするための記述です。
using System;これは、次のように考えるとよいです。
System名前空間にあるクラスを使いやすくするusing System; があるため、次のように短く書けます。
Console.WriteLine("C#研修");DateTime now = DateTime.Now;名前空間を指定してクラスを作る
Section titled “名前空間を指定してクラスを作る”自分で作るクラスも、名前空間の中に入れることができます。
using System;
namespace Chapter09_UsefulClasses{ class Program { static void Main() { Employee employee = new Employee { EmployeeId = 1001, Name = "山田太郎" };
Console.WriteLine(employee.Name); } }
class Employee { public int EmployeeId { get; set; } public string Name { get; set; } }}この例では、Program クラスと Employee クラスが、Chapter09_UsefulClasses という名前空間に含まれています。
名前空間は住所のようなもの
Section titled “名前空間は住所のようなもの”同じ名前のクラスでも、名前空間が違えば別のクラスとして扱えます。
たとえば、次のように考えることができます。
Sales.Employee → 営業システム用のEmployeeクラス
Training.Employee → 研修用のEmployeeクラスどちらも Employee という名前ですが、名前空間が異なるため区別できます。
名前空間を含めたクラス名を、完全修飾名と呼ぶことがあります。
たとえば、Console クラスを完全に書くと次のようになります。
System.Console.WriteLine("こんにちは");通常は using System; を書いて、短く次のように使います。
Console.WriteLine("こんにちは");Visual Studioでクラスを追加したときの注意
Section titled “Visual Studioでクラスを追加したときの注意”Visual Studioで新しいクラスファイルを追加すると、名前空間が自動で付く場合があります。
例:
namespace Chapter09_UsefulClasses{ class Employee { }}また、環境によっては次のような形式になることもあります。
namespace Chapter09_UsefulClasses;
class Employee{}これは ファイルスコープ名前空間 と呼ばれる書き方です。
本研修では、最初は構造が分かりやすいように、次の形式を基本にします。
namespace Chapter09_UsefulClasses{ class Employee { }}補足
どちらの書き方もC#の正しい書き方です。 研修では、クラスのまとまりを視覚的に理解しやすくするため、
{ }を使った名前空間の書き方を中心に説明します。
9-2 Stringクラスを使ってみる
Section titled “9-2 Stringクラスを使ってみる”stringは文字列を扱う型
Section titled “stringは文字列を扱う型”これまで、文字列を扱うために string 型を使ってきました。
string name = "山田太郎";string は、文字列を扱うための型です。
C#では string と書くことが多いですが、内部的には String クラスと関係があります。
この章では細かい違いは気にせず、次のように考えてください。
stringは文字列を扱うための型文字列には便利なプロパティやメソッドがあるLengthプロパティ
Section titled “Lengthプロパティ”文字列の長さを調べるには、Length プロパティを使います。
using System;
class Program{ static void Main() { string employeeName = "山田太郎";
Console.WriteLine($"氏名:{employeeName}"); Console.WriteLine($"文字数:{employeeName.Length}"); }}実行結果:
氏名:山田太郎文字数:4Length は、文字列が持っている文字数という情報を取得するプロパティです。
employeeName.Lengthプロパティなので、() は付けません。
Containsメソッド
Section titled “Containsメソッド”文字列に特定の文字や単語が含まれているかを調べるには、Contains メソッドを使います。
using System;
class Program{ static void Main() { string email = "yamada@example.com";
bool containsAtMark = email.Contains("@");
if (containsAtMark) { Console.WriteLine("@が含まれています。"); } else { Console.WriteLine("@が含まれていません。"); } }}実行結果:
@が含まれています。Contains は、指定した文字列が含まれているかを調べ、true または false を返します。
email.Contains("@")メソッドなので、() が付きます。
Replaceメソッド
Section titled “Replaceメソッド”文字列の一部を置き換えるには、Replace メソッドを使います。
using System;
class Program{ static void Main() { string message = "C#を勉強しています。";
string replacedMessage = message.Replace("勉強", "学習");
Console.WriteLine(message); Console.WriteLine(replacedMessage); }}実行結果:
C#を勉強しています。C#を学習しています。Replace は、元の文字列を直接変更するのではなく、置き換え後の新しい文字列を返します。
Substringメソッド
Section titled “Substringメソッド”文字列の一部を取り出すには、Substring メソッドを使います。
using System;
class Program{ static void Main() { string employeeCode = "EMP1001";
string prefix = employeeCode.Substring(0, 3); string number = employeeCode.Substring(3);
Console.WriteLine($"接頭辞:{prefix}"); Console.WriteLine($"番号:{number}"); }}実行結果:
接頭辞:EMP番号:1001Substring(0, 3) は、0番目から3文字分を取り出します。
E M P 1 0 0 10 1 2 3 4 5 6Substring(3) は、3番目から最後までを取り出します。
ToUpperとToLower
Section titled “ToUpperとToLower”英字を大文字・小文字に変換するには、ToUpper や ToLower を使います。
using System;
class Program{ static void Main() { string command = "Search";
Console.WriteLine(command.ToUpper()); Console.WriteLine(command.ToLower()); }}実行結果:
SEARCHsearch入力されたコマンドを小文字に統一してから判定したい場合などに使えます。
string command = Console.ReadLine();command = command.ToLower();Trimメソッド
Section titled “Trimメソッド”文字列の前後にある空白を取り除くには、Trim メソッドを使います。
using System;
class Program{ static void Main() { string input = " yamada ";
string trimmed = input.Trim();
Console.WriteLine($"[{input}]"); Console.WriteLine($"[{trimmed}]"); }}実行結果:
[ yamada ][yamada]Trim は、入力値の前後に余計な空白が入ってしまう場合に便利です。
文字列処理の業務アプリでの利用例
Section titled “文字列処理の業務アプリでの利用例”業務アプリでは、文字列処理は多くの場面で使われます。
メールアドレスに @ が含まれているか確認する社員コードの先頭3文字を取り出す入力されたコマンドを小文字に統一する前後の余分な空白を削除する特定の文字を置き換えるこの章では、まず代表的な文字列処理を覚えましょう。
エラーになる例:存在しない位置をSubstringで取り出す
Section titled “エラーになる例:存在しない位置をSubstringで取り出す”次のコードは実行時にエラーになります。
string code = "EMP";string number = code.Substring(3, 4);code の長さは3文字です。
インデックスは 0、1、2 までしかありません。
存在しない範囲を取り出そうとするとエラーになります。
注意
Substringを使うときは、文字列の長さと取り出す位置に注意してください。
9-3 Mathクラスを使ってみる
Section titled “9-3 Mathクラスを使ってみる”Mathクラスとは
Section titled “Mathクラスとは”Math クラスは、数値計算に関する便利な静的メソッドを持つクラスです。
第8章でも、Math.Max や Math.Min を使いました。
int max = Math.Max(10, 20);int min = Math.Min(10, 20);Math クラスのメソッドは、基本的にクラス名から直接呼び出します。
Math.メソッド名(...)MaxとMin
Section titled “MaxとMin”Math.Max は大きい値、Math.Min は小さい値を返します。
using System;
class Program{ static void Main() { int score1 = 82; int score2 = 95;
int higherScore = Math.Max(score1, score2); int lowerScore = Math.Min(score1, score2);
Console.WriteLine($"高い点数:{higherScore}"); Console.WriteLine($"低い点数:{lowerScore}"); }}実行結果:
高い点数:95低い点数:82Math.Abs は、絶対値を求めます。
絶対値とは、符号を取り除いた値です。
using System;
class Program{ static void Main() { int difference = -15;
int absoluteValue = Math.Abs(difference);
Console.WriteLine($"差分:{difference}"); Console.WriteLine($"絶対値:{absoluteValue}"); }}実行結果:
差分:-15絶対値:15たとえば、予定値と実績値の差を扱うときに、差の大きさだけを知りたい場合があります。
Math.Round は、小数を丸めます。
using System;
class Program{ static void Main() { double average = 82.6666667;
double rounded = Math.Round(average, 1);
Console.WriteLine($"平均点:{average}"); Console.WriteLine($"丸めた平均点:{rounded}"); }}実行結果:
平均点:82.6666667丸めた平均点:82.7Math.Round(average, 1) は、小数第1位までに丸めます。
CeilingとFloor
Section titled “CeilingとFloor”Math.Ceiling は切り上げ、Math.Floor は切り捨てを行います。
using System;
class Program{ static void Main() { double value = 12.3;
Console.WriteLine(Math.Ceiling(value)); Console.WriteLine(Math.Floor(value)); }}実行結果:
1312| メソッド | 意味 |
|---|---|
Math.Ceiling | 切り上げ |
Math.Floor | 切り捨て |
Math.Round | 丸め |
Math.Pow は、累乗を求めます。
using System;
class Program{ static void Main() { double result = Math.Pow(2, 3);
Console.WriteLine(result); }}実行結果:
8Math.Pow(2, 3) は、2の3乗を表します。
2 × 2 × 2 = 8Mathクラスの利用例:平均点を丸める
Section titled “Mathクラスの利用例:平均点を丸める”次のコードでは、配列の平均点を求め、小数第1位までに丸めます。
using System;
class Program{ static void Main() { int[] scores = { 80, 75, 90, 68, 85 };
int total = 0;
foreach (int score in scores) { total += score; }
double average = (double)total / scores.Length; double roundedAverage = Math.Round(average, 1);
Console.WriteLine($"平均点:{average}"); Console.WriteLine($"表示用平均点:{roundedAverage}"); }}実行結果:
平均点:79.6表示用平均点:79.69-4 DateTime構造体を使ってみる
Section titled “9-4 DateTime構造体を使ってみる”DateTimeとは
Section titled “DateTimeとは”DateTime は、日付や時刻を扱うための型です。
現在日時を取得するには、DateTime.Now を使います。
using System;
class Program{ static void Main() { DateTime now = DateTime.Now;
Console.WriteLine(now); }}実行結果例:
2026/05/18 10:30:00実行結果は、実行した日時によって変わります。
今日の日付を取得する
Section titled “今日の日付を取得する”今日の日付だけを扱いたい場合は、DateTime.Today を使います。
using System;
class Program{ static void Main() { DateTime today = DateTime.Today;
Console.WriteLine(today); }}DateTime.Today は日付を表します。
時刻部分は通常 00:00:00 になります。
年・月・日を取り出す
Section titled “年・月・日を取り出す”DateTime 型の値から、年、月、日を取り出せます。
using System;
class Program{ static void Main() { DateTime today = DateTime.Today;
Console.WriteLine($"年:{today.Year}"); Console.WriteLine($"月:{today.Month}"); Console.WriteLine($"日:{today.Day}"); }}実行結果例:
年:2026月:5日:18Year、Month、Day はプロパティです。
日付を作成する
Section titled “日付を作成する”特定の日付を作成するには、new DateTime を使います。
using System;
class Program{ static void Main() { DateTime trainingStartDate = new DateTime(2026, 5, 18);
Console.WriteLine(trainingStartDate); }}new DateTime(2026, 5, 18) は、2026年5月18日を表す日付を作成しています。
AddDaysで日付を加算する
Section titled “AddDaysで日付を加算する”指定日から何日後かを求めるには、AddDays を使います。
using System;
class Program{ static void Main() { DateTime trainingStartDate = new DateTime(2026, 5, 18);
DateTime afterSevenDays = trainingStartDate.AddDays(7);
Console.WriteLine($"開始日:{trainingStartDate}"); Console.WriteLine($"7日後:{afterSevenDays}"); }}AddDays(7) は、7日後の日付を返します。
日付の差を求める
Section titled “日付の差を求める”2つの日付の差を求めることもできます。
using System;
class Program{ static void Main() { DateTime startDate = new DateTime(2026, 5, 18); DateTime endDate = new DateTime(2026, 6, 12);
TimeSpan period = endDate - startDate;
Console.WriteLine($"日数:{period.Days}日"); }}TimeSpan は、時間の長さを表す型です。
この例では、period.Days で日数を取得しています。
ToStringで日付の表示形式を指定する
Section titled “ToStringで日付の表示形式を指定する”DateTime の値は、ToString を使って表示形式を指定できます。
using System;
class Program{ static void Main() { DateTime date = new DateTime(2026, 5, 18, 9, 30, 0);
Console.WriteLine(date.ToString("yyyy/MM/dd")); Console.WriteLine(date.ToString("yyyy年MM月dd日")); Console.WriteLine(date.ToString("yyyy/MM/dd HH:mm")); }}実行結果:
2026/05/182026年05月18日2026/05/18 09:30主な日付書式
Section titled “主な日付書式”| 書式 | 表示例 | 意味 |
|---|---|---|
yyyy | 2026 | 西暦4桁 |
MM | 05 | 月2桁 |
M | 5 | 月 |
dd | 18 | 日2桁 |
d | 18 | 日 |
HH | 09 | 時2桁 |
mm | 30 | 分2桁 |
日付の表示形式は、業務アプリでもよく使います。
画面表示用の日付帳票出力用の日付ファイル名に含める日付ログ出力用の日付ファイル名に日付を使う例
Section titled “ファイル名に日付を使う例”日付を文字列に変換して、ファイル名の一部として使うこともできます。
using System;
class Program{ static void Main() { DateTime today = DateTime.Today;
string fileName = $"sales_{today.ToString("yyyyMMdd")}.txt";
Console.WriteLine(fileName); }}実行結果例:
sales_20260518.txtyyyyMMdd のように書くと、ファイル名に使いやすい日付文字列を作成できます。
9-5 Fileクラスを使ってみる
Section titled “9-5 Fileクラスを使ってみる”Fileクラスとは
Section titled “Fileクラスとは”File クラスは、ファイルの読み書きに使うクラスです。
テキストファイルを作成したり、読み込んだりできます。
File クラスは、System.IO 名前空間に含まれています。
そのため、ファイル操作を行う場合は、先頭に次の using を追加します。
using System.IO;テキストファイルを書き込む
Section titled “テキストファイルを書き込む”次のコードでは、社員名の一覧をテキストファイルに書き込みます。
using System;using System.IO;
class Program{ static void Main() { string[] employeeNames = { "山田太郎", "佐藤花子", "鈴木一郎" };
File.WriteAllLines("employee_names.txt", employeeNames);
Console.WriteLine("ファイルを書き込みました。"); }}実行結果:
ファイルを書き込みました。このコードを実行すると、employee_names.txt というファイルが作成されます。
ファイルの作成場所について
Section titled “ファイルの作成場所について”File.WriteAllLines("employee_names.txt", employeeNames); のようにファイル名だけを指定した場合、ファイルはプログラムの実行場所に作成されます。
Visual Studioから実行した場合、プロジェクトフォルダではなく、bin フォルダ配下に作成されることがあります。
ファイルが見つからない場合は、ソリューションエクスプローラーやエクスプローラーで検索してください。
注意
研修では、最初はファイル名だけを指定する簡単な方法で試します。 実務では、保存先フォルダやファイルパスを明確に指定することが多いです。
テキストファイルを読み込む
Section titled “テキストファイルを読み込む”先ほど作成した employee_names.txt を読み込みます。
using System;using System.IO;
class Program{ static void Main() { string[] lines = File.ReadAllLines("employee_names.txt");
foreach (string line in lines) { Console.WriteLine(line); } }}実行結果:
山田太郎佐藤花子鈴木一郎File.ReadAllLines は、テキストファイルのすべての行を読み込み、string[] として返します。
ファイルの存在を確認する
Section titled “ファイルの存在を確認する”ファイルが存在しない状態で File.ReadAllLines を実行すると、エラーになります。
そこで、読み込む前にファイルが存在するか確認できます。
using System;using System.IO;
class Program{ static void Main() { string filePath = "employee_names.txt";
if (File.Exists(filePath)) { string[] lines = File.ReadAllLines(filePath);
foreach (string line in lines) { Console.WriteLine(line); } } else { Console.WriteLine("ファイルが見つかりません。"); } }}File.Exists は、指定したファイルが存在するかを調べ、true または false を返します。
1つの文字列を書き込む
Section titled “1つの文字列を書き込む”複数行ではなく、1つの文字列を書き込む場合は File.WriteAllText を使えます。
using System;using System.IO;
class Program{ static void Main() { string text = "C#研修のメモです。";
File.WriteAllText("memo.txt", text);
Console.WriteLine("メモを書き込みました。"); }}1つの文字列として読み込む
Section titled “1つの文字列として読み込む”File.ReadAllText を使うと、ファイル全体を1つの文字列として読み込めます。
using System;using System.IO;
class Program{ static void Main() { string text = File.ReadAllText("memo.txt");
Console.WriteLine(text); }}ファイルに追記する
Section titled “ファイルに追記する”既存のファイルに内容を追加する場合は、File.AppendAllText を使います。
using System;using System.IO;
class Program{ static void Main() { string logText = $"{DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")} アプリを実行しました。";
File.AppendAllText("app.log", logText + Environment.NewLine);
Console.WriteLine("ログを追記しました。"); }}Environment.NewLine は、改行を表します。
Fileクラスを使うときの注意
Section titled “Fileクラスを使うときの注意”ファイル操作では、次のような問題が起きることがあります。
ファイルが存在しない保存先フォルダが存在しない同じ名前のファイルを上書きしてしまうファイルを開く権限がない他のアプリがファイルを使用中この章では、まず基本的な読み書きを学習します。
ファイル操作で発生するエラーへの対応は、後の例外処理の章で扱います。
よくあるつまずき
Section titled “よくあるつまずき”この章でよくあるつまずきを確認します。
| つまずき | 原因 | 対応 |
|---|---|---|
Console や File が見つからない | 必要な using がない | using System; や using System.IO; を確認する |
| 名前空間の意味が分からない | クラスの分類という考え方に慣れていない | 名前空間はクラスの住所のようなものと考える |
Length() と書いてしまう | プロパティとメソッドを混同している | Length はプロパティなので () を付けない |
Contains に () を付け忘れる | メソッド呼び出しに慣れていない | メソッドには () を付ける |
Substring でエラーになる | 存在しない位置を指定している | 文字列の長さとインデックスを確認する |
DateTime.Now() と書いてしまう | 静的プロパティと静的メソッドを混同している | DateTime.Now はプロパティ |
| 日付の表示形式が思った通りにならない | 書式文字列を間違えている | yyyy、MM、dd の意味を確認する |
| ファイルが見つからない | 実行フォルダが想定と違う | ファイルの作成場所を確認する |
File.ReadAllLines でエラーになる | ファイルが存在しない | File.Exists で確認する |
| ファイルが文字化けする | 文字コードや環境の違い | この章では基本操作を優先し、必要に応じて講師に確認する |
学んだことチェック
Section titled “学んだことチェック”次の項目について、自分で説明できるか確認してください。
- 名前空間とは何かをおおまかに説明できる
-
usingディレクティブの役割を説明できる - 完全修飾名とは何かをおおまかに説明できる
-
string.Lengthを使って文字数を取得できる -
Containsを使って文字列に指定文字が含まれるか確認できる -
Replaceを使って文字列を置き換えられる -
Substringを使って文字列の一部を取り出せる -
Trimを使って前後の空白を取り除ける -
Math.Max、Math.Min、Math.Roundを使える -
DateTime.NowとDateTime.Todayを使える -
DateTimeから年、月、日を取り出せる -
AddDaysで日付を加算できる -
ToStringで日付の表示形式を指定できる -
File.WriteAllLinesでファイルを書き込める -
File.ReadAllLinesでファイルを読み込める -
File.Existsでファイルの存在を確認できる
研修の進め方によっては、隣の人またはチーム内で説明確認を行います。
次の内容を、自分の言葉で説明してください。
- 名前空間は何のためにありますか。
using System;は何をするための記述ですか。LengthとContains()の書き方の違いは何ですか。Math.Round(82.666, 1)は何をしますか。DateTime.NowとDateTime.Todayの違いは何ですか。File.WriteAllLinesとFile.ReadAllLinesは、それぞれ何をするメソッドですか。- ファイルを読み込む前に
File.Existsを使う理由は何ですか。
説明するときは、完全な答えでなくても構いません。
自分の言葉で説明しようとすることが大切です。
この章の演習課題に取り組みます。
制限時間は 70分 です。
時間内にすべて完成しなくても構いません。
できたところまでを保存し、Gitに提出してください。
提出について
制限時間になったら、完成・未完成に関わらず作業を止めます。 できたところまでをGitにcommitし、pushしてください。 未完成の場合は、どこまでできたかを報告できるようにしておきましょう。
まずは、全員が必須課題に取り組んでください。
課題9-1 文字列の長さを調べる
Section titled “課題9-1 文字列の長さを調べる”社員名を変数に代入し、文字数を表示してください。
実行結果例:
氏名:山田太郎文字数:4条件:
string型の変数を使うLengthプロパティを使う- 文字列補間を使って表示する
課題9-2 メールアドレスを確認する
Section titled “課題9-2 メールアドレスを確認する”メールアドレスに @ が含まれているかを判定してください。
実行例:
メールアドレスを入力してください。yamada@example.com@が含まれています。条件:
Console.ReadLineを使うContainsメソッドを使うif文を使う
課題9-3 平均点を丸める
Section titled “課題9-3 平均点を丸める”次の点数配列から平均点を求め、小数第1位までに丸めて表示してください。
80, 75, 90, 68, 85実行結果例:
平均点:79.6表示用平均点:79.6条件:
- 配列を使う
foreachまたはfor文で合計を求めるMath.Roundを使う
課題9-4 今日の日付を表示する
Section titled “課題9-4 今日の日付を表示する”今日の日付を次の形式で表示してください。
2026年05月18日条件:
DateTime.Todayを使うToString("yyyy年MM月dd日")を使う
課題9-5 社員名一覧をファイルに書き込む
Section titled “課題9-5 社員名一覧をファイルに書き込む”次の社員名を employee_names.txt に書き込んでください。
山田太郎佐藤花子鈴木一郎条件:
using System.IO;を書くstring[]を使うFile.WriteAllLinesを使う- 実行後、ファイルが作成されていることを確認する
必須課題が終わった人は、発展課題に取り組んでください。
課題9-6 社員コードを分解する
Section titled “課題9-6 社員コードを分解する”社員コード EMP1001 を、接頭辞と番号に分けて表示してください。
実行結果例:
社員コード:EMP1001接頭辞:EMP番号:1001条件:
Substringを使う- 接頭辞は先頭3文字とする
- 番号は4文字目以降とする
課題9-7 入力コマンドを小文字に統一する
Section titled “課題9-7 入力コマンドを小文字に統一する”コマンドを入力し、小文字に変換してから判定してください。
| コマンド | 表示 |
|---|---|
add | 登録処理を行います |
list | 一覧表示を行います |
exit | 終了します |
| それ以外 | 不明なコマンドです |
実行例:
コマンドを入力してください。ADD登録処理を行います条件:
Console.ReadLineを使うToLowerを使うswitch文を使う
課題9-8 日付から研修終了予定日を求める
Section titled “課題9-8 日付から研修終了予定日を求める”研修開始日を 2026年5月18日 とし、27日後の日付を表示してください。
実行結果例:
開始日:2026/05/18終了予定日:2026/06/14条件:
new DateTime(2026, 5, 18)を使うAddDaysを使うToString("yyyy/MM/dd")を使う
課題9-9 ファイルを読み込んで表示する
Section titled “課題9-9 ファイルを読み込んで表示する”課題9-5で作成した employee_names.txt を読み込み、すべての行を表示してください。
実行結果例:
山田太郎佐藤花子鈴木一郎条件:
File.Existsでファイルの存在を確認する- ファイルが存在する場合は
File.ReadAllLinesで読み込む foreach文で表示する- ファイルが存在しない場合は「ファイルが見つかりません」と表示する
課題9-10 実行ログを追記する
Section titled “課題9-10 実行ログを追記する”プログラムを実行した日時を app.log に追記してください。
実行結果例:
ログを追記しました。app.log の内容例:
2026/05/18 09:30:00 アプリを実行しました。2026/05/18 09:35:12 アプリを実行しました。条件:
DateTime.Nowを使うToString("yyyy/MM/dd HH:mm:ss")を使うFile.AppendAllTextを使う- 改行には
Environment.NewLineを使う
課題9-11 メモ保存アプリ
Section titled “課題9-11 メモ保存アプリ”入力されたメモを memo.txt に保存してください。
実行例:
メモを入力してください。会議資料を確認するメモを保存しました。条件:
Console.ReadLineを使うFile.WriteAllTextを使う- 保存後、
File.ReadAllTextで読み込み、保存内容を表示する
Gitへの提出
Section titled “Gitへの提出”課題が終わったら、できたところまでをGitに提出します。
まず、現在の状態を確認します。
git status変更されたファイルを追加します。
git add .コミットします。
git commit -m "Chapter09 クラスを使いこなそう"ファイルサーバー上のリポジトリへpushします。
git pushGitの操作でエラーが出た場合は、自己判断で同じ操作を繰り返さず、講師に確認してください。
注意
ファイル出力を行う課題では、作成された
.txtや.logファイルもGitの対象になる場合があります。 提出対象に含めるかどうかは、研修の指示に従ってください。
提出前チェックリスト
Section titled “提出前チェックリスト”提出前に、次の項目を確認してください。
- プログラムをVisual Studioから実行できる
- 必要な
usingを書いている -
String関連のプロパティやメソッドを使えている -
Lengthに()を付けていない -
Contains、Replace、Substringなどのメソッドに()を付けている -
Mathクラスの静的メソッドを使えている -
DateTimeで日付を扱えている - 日付を指定した形式で表示できている
-
File.WriteAllLinesまたはFile.WriteAllTextでファイルを書き込めている -
File.ReadAllLinesまたはFile.ReadAllTextでファイルを読み込めている - ファイルが存在しない場合の処理を考慮している
- インデントが整っている
- Gitにcommitしている
- Gitにpushしている
この章のまとめ
Section titled “この章のまとめ”この章では、.NETに用意されている代表的なクラスや構造体を利用しました。
この章で学んだ主な内容は次の通りです。
- 名前空間は、クラスを分類するための入れ物である
usingディレクティブを使うと、名前空間の指定を省略できるstringには、文字列を扱うための便利なプロパティやメソッドがあるLengthは文字数を取得するプロパティであるContains、Replace、Substring、Trimなどは文字列を扱うメソッドであるMathクラスには、数値計算に便利な静的メソッドがあるDateTimeは、日付や時刻を扱うための型であるDateTime.NowやDateTime.Todayで日時や日付を取得できるToStringを使うと、日付の表示形式を指定できるFileクラスを使うと、テキストファイルの読み書きができる- ファイル操作では、ファイルの存在や保存場所に注意する必要がある
次章では、クラスについてさらに掘り下げます。
メソッドの戻り値、メソッドのオーバーロード、省略可能な引数、コンストラクター、プロパティの使い方などを学び、クラスをより実践的に使えるようにしていきます。