C#の学習、ありがとうございます!
前回でモダンなデータ処理の概念を学びましたので、今回は**ファイル操作(I/O)と、コードをきれいに保つための名前空間(Namespaces)と静的クラス(Static Classes)**について解説します。
21. ファイル操作 (I/O)
C#でテキストファイルなどのデータを読み書きするには、System.IO
名前空間のクラスを使用します。特によく使うのが、簡単なテキスト操作に便利な File
クラスです。
📄 ファイルへの書き込み(WriteAllText)
File.WriteAllText
メソッドは、指定されたファイルにテキストを書き込みます。ファイルが存在しない場合は新規作成し、存在する場合は上書きします。
C#
using System.IO;
using System.Text;
string filePath = "data.txt";
string content = "これはテストデータです。\n新しい行です。";
try
{
// ファイルにテキストを書き込む(UTF-8エンコーディングを使用)
File.WriteAllText(filePath, content, Encoding.UTF8);
System.Console.WriteLine($"ファイル '{filePath}' への書き込みが完了しました。");
}
catch (IOException ex)
{
System.Console.WriteLine($"ファイル書き込みエラー: {ex.Message}");
}
📚 ファイルからの読み込み(ReadAllText)
File.ReadAllText
メソッドは、ファイル全体からすべてのテキストを読み込み、一つの文字列として返します。
C#
using System.IO;
string filePath = "data.txt";
try
{
// ファイルからすべてのテキストを読み込む
string readContent = File.ReadAllText(filePath);
System.Console.WriteLine("\n--- 読み込んだ内容 ---");
System.Console.WriteLine(readContent);
}
catch (FileNotFoundException)
{
System.Console.WriteLine($"エラー: ファイル '{filePath}' が見つかりません。");
}
📝 その他の便利なファイル操作
メソッド | 処理内容 |
File.AppendAllText() | ファイルの末尾にテキストを追加します(上書きしません)。 |
File.Exists(path) | ファイルが存在するかどうかを bool で返します。 |
File.Delete(path) | 指定されたファイルを削除します。 |
File.ReadAllLines(path) | ファイルの内容を行ごとに読み込み、string[] (文字列の配列)として返します。 |
Google スプレッドシートにエクスポート
22. 名前空間 (Namespaces)
名前空間は、クラス、デリゲート、インターフェースなどの型を整理し、名前の衝突を防ぐために使用されます。C#のプロジェクトでは、非常に重要な組織化の単位です。
🏷️ 定義と利用
自分で作成するクラスも、通常は特定の名前空間内に配置します。
C#
// 1. 名前空間の定義
namespace MyProject.Utilities
{
// このクラスは MyProject.Utilities 名前空間に属する
public class Logger
{
public static void Log(string message)
{
System.Console.WriteLine($"LOG: {message}");
}
}
}
// 2. 別のファイルやクラスでの利用
// usingディレクティブで名前空間をインポート
using MyProject.Utilities;
public class Program
{
public static void Main()
{
// 名前空間を省略して Logger を使えるようになる
Logger.Log("アプリケーションが開始されました。");
}
}
using System;
や using System.Collections.Generic;
など、これまでコードの冒頭に記述してきたものは、すべて標準ライブラリの名前空間をインポートするための宣言です。
23. 静的クラスとメンバー(Static Classes and Members)
⚙️ 静的メンバー (static
キーワード)
static
キーワードを付けたフィールドやメソッドは、クラスのインスタンス(オブジェクト)を作成せずに直接クラス名を通じて呼び出すことができます。
- 静的フィールド: クラス全体で共有される唯一のデータ。
- 静的メソッド: インスタンス(オブジェクト)の状態に依存しない処理。
C#
public class Settings
{
// staticなフィールド: すべてのSettingsインスタンスで共有される
public static string Version = "1.0.0";
// staticなメソッド: インスタンスを作成せず呼び出せる
public static void ShowVersion()
{
System.Console.WriteLine($"現在のバージョン: {Version}");
}
}
// 呼び出し:インスタンスを作成する必要がない
Settings.ShowVersion(); // 出力: 現在のバージョン: 1.0.0
// staticなフィールドは直接変更可能
Settings.Version = "1.0.1";
Settings.ShowVersion(); // 出力: 現在のバージョン: 1.0.1
🧱 静的クラス (static class
)
クラス全体を static
で宣言すると、そのクラスは静的メンバーのみを含むことが強制され、インスタンス化(new
演算子でオブジェクト作成)ができなくなります。
ユーティリティ関数やヘルパークラスなど、状態を持たず、機能だけを提供するクラスを作るのに適しています。
C#
// 静的クラスはインスタンス化できない
public static class MathHelper
{
// すべてのメンバーは静的でなければならない
public static double Pi = 3.14159;
public static double CalcCircumference(double radius)
{
return 2 * Pi * radius;
}
}
// 呼び出し
double circumference = MathHelper.CalcCircumference(5.0);
System.Console.WriteLine($"円周: {circumference}");
// new MathHelper(); // これはコンパイルエラーになる
これでC#の基礎的な学習は完了です。これらの知識があれば、ASP.NET Core(Web)、Unity(ゲーム)、WPF/WinForms(デスクトップ)など、あらゆるC#の応用分野に進むことができます。