C#のクラス(class)の作り方を、概念からファイル追加の実手順、基本構文、よくあるつまずきの対処まで順番に解説します。
最小のクラス宣言から始め、命名規則、namespace(名前空間)とファイル配置の考え方、Visual StudioとVS Code(.NET CLI)での新規作成方法、実行できるサンプルまで丁寧に説明します。
C#のクラス(class)とは?
オブジェクト指向とクラスの関係
クラスはオブジェクト指向における設計図です。
たとえば「人」という概念をプログラムで扱いたい時に、名前や年齢といった情報(プロパティ)と、あいさつするなどの振る舞い(メソッド)をひとまとまりにした型を定義します。
定義したクラスから具体的な実体を作る操作をインスタンス化と呼び、その実体をインスタンス(オブジェクト)と呼びます。
C#でクラスを使うメリット
クラスを使うと、関連するデータと処理をまとめて表現できるため、読みやすく変更に強いコードになります。
再利用性が高まり、プロジェクトが大きくなっても拡張しやすく、テストもしやすくなります。
現実世界のモデルやアプリの機能を、自然な形でコードに写し取れる点も大きな利点です。
C# classの基本構文
最小のクラス宣言
最小のクラスは、名前と波かっこだけで宣言できます。
以下は空のクラスの例です。
// ファイル: Person.cs
// C# 10以降のファイルスコープnamespaceを使用
namespace MyApp;
// 最小のクラス宣言(中身が空)
public class Person
{
// 後からプロパティやメソッドを追加できます
}
この段階では機能はありませんが、コンパイル可能な「型」ができました。
必要に応じてプロパティやメソッド、コンストラクタなどを追加していきます。
namespaceとファイル配置
C#ではクラスに論理的な住所としてnamespace
(名前空間)を付けます。
これにより、クラス名の衝突を避け、フォルダー構造と対応させることで見通しが良くなります。
// ファイルスコープnamespace (C# 10+ 推奨)
namespace MyApp.Models;
public class Person { }
// ブロックスコープnamespace (従来の書き方)
namespace MyApp.Models
{
public class Person { }
}
クラスのファイル配置とnamespace
は一致させるのが一般的です。
以下は推奨例です。
ファイルパス | 推奨namespace | 補足 |
---|---|---|
Models/Person.cs | MyApp.Models | フォルダーとnamespaceをそろえると検索性が上がります |
Services/UserService.cs | MyApp.Services | 物理ファイル名とクラス名は一致させるのが慣例です |
なお、ファイル名とクラス名は必ずしも一致しなくてもコンパイルは可能ですが、メンテナンス性のため一致させるのが実務では標準的です。
クラス名の命名規則(PascalCase)
C#のクラス名はPascalCase(各単語の先頭を大文字)が基本です。
意味が明確で、略語は避けます。
対象 | 推奨例 | 避けたい例 | 理由 |
---|---|---|---|
クラス名 | Person, OrderItem, UserService | person, order_item, USER | C#では型はPascalCaseで表記する習慣があります |
省略 | HttpClient | HttpCli, HC | 不必要な省略は可読性を下げます |
先頭記号 | _Person | 1Person | 記号や数字開始は避けるべきです |
プロジェクト全体でスタイルを統一するため、.editorconfigやアナライザーを活用すると良いです。
C#のクラスの作り方(新規作成手順)
Visual Studioでクラスを追加
Visual Studioを利用する場合はGUIからクラスファイルを追加できます。
コンソールアプリなどのプロジェクトを作成します。
プロジェクトの作成についてわからない場合は、以下の記事を参考にしてください。
ソリューションエクスプローラーで対象プロジェクトを右クリックし、追加 > クラス… を選びます。

名前にPerson.cs
などを入力し、必要であればフォルダー(例: Models
)を作成します。

生成されたファイルに、新しいクラス本体を記述します。
これでクラスを追加できます。
クラス追加の画面はShift+Alt+C
のショートカットキーでも開けます。
VS Code(.NET CLI)でクラスファイルを作成
VS Codeと.NET CLIを使う場合はターミナル操作が中心です。
# 1) 新規コンソールアプリを作成
dotnet new console -n MyApp
cd MyApp
# 2) モデル用フォルダーとクラスファイルを作成
mkdir Models
code Models/Person.cs # エディタで開く(任意)
以下のようにクラスを記述します(Visual Studioでも同様です)。
サンプルコードと実行結果
ここでは、クラスの作り方に加えて、最低限の使い方(インスタンス生成、プロパティ、コンストラクタ)が一目でわかる実行例を示します。
// ファイル: Person.cs
// クラス(class)の基本: プロパティ、コンストラクタ、メソッドの例
namespace MyApp.Models;
public class Person
{
// 自動実装プロパティ。外から読み書きできます。
public string Name { get; set; }
// 数値のプロパティ。こちらも読み書き可能です。
public int Age { get; set; }
// コンストラクタ。インスタンス生成時に初期値を渡します。
public Person(string name, int age)
{
Name = name;
Age = age;
}
// 振る舞い(メソッド)の例。あいさつ文を作って返します。
public string Greet()
{
return $"こんにちは。私は {Name} です。{Age} 歳です。";
}
}
// ファイル: Program.cs
// クラスのインスタンス化とメンバーの利用例です。
using MyApp.Models; // Personがあるnamespaceを参照
// Personクラスのインスタンス(オブジェクト)を生成
var taro = new Person(name: "Taro", age: 20);
// メソッド呼び出しでメッセージを取得して表示
Console.WriteLine(taro.Greet());
// プロパティの書き込み(年齢を1つ増やす)
taro.Age++;
// 変更が反映されることを確認
Console.WriteLine($"1年後の年齢は {taro.Age} です。");
実行結果は次のようになります。
こんにちは。私は Taro です。20 歳です。
1年後の年齢は 21 です。
このように、クラス定義(設計図)を作り、new
でインスタンスを生成し、プロパティやメソッドを使って動作させるのが基本的な流れです。
作成時のチェックリストと注意点
クラスが認識されない時の確認
クラスを追加したのに利用側から見えない場合、次の観点を順に確認します。
- ビルドが成功するかを確認します。まずはプロジェクトをクリーン/リビルドし、コンパイルエラーを解消します。
- ファイルがプロジェクトに含まれているかを確認します。Visual Studioではプロパティのビルドアクションが
Compile
になっているかを見ます。 namespace
とusing
が正しいかを確認します。利用側のファイルに適切なusing
があるか、または完全修飾名で参照できるかを試します。- アクセス修飾子が適切かを確認します。同一プロジェクト内なら
public
でなくても見えますが、別プロジェクトから参照するクラスはpublic
が必要です。 - 別アセンブリの場合はプロジェクト参照が設定されているかを確認します。CLIなら
dotnet add reference ../OtherProject/OtherProject.csproj
のように参照を追加します。
namespaceの不一致への対処
ファイル配置とnamespace
がずれていると、using
の記述が合わずに認識されないことがあります。
修正方法は2つです。
- クラス側の
namespace
をフォルダー構造に合わせて変更します。 - 利用側に正しい
using
を追加するか、完全修飾名で参照します(例:var p = new MyApp.Models.Person("A", 10);
)。
また、C# 10以降で導入されたファイルスコープnamespaceと従来のブロックスコープnamespaceを混在させても動作しますが、プロジェクト内でスタイルを統一した方が混乱を避けられます。
同名クラスの衝突を避ける
異なるライブラリや異なるフォルダーで同名のクラスがあると曖昧さが生じます。
次の対応が有効です。
- 意味のある
namespace
を付けて、衝突しにくい論理名にします(例:MyCompany.Project.Domain.Person
)。 - 必要に応じてエイリアスを使い、呼び出し側で明示的に使い分けます。
// usingエイリアスの例
using DomainPerson = MyCompany.Project.Domain.Person;
using DtoPerson = MyCompany.Project.Contracts.Person;
var p1 = new DomainPerson("Hanako", 25);
var p2 = new DtoPerson { Name = "Hanako", Age = 25 }; // こちらはDTOなど別物の可能性
エイリアスを使うと、同名でも衝突せず明確に意図を示せます。
まとめ
本記事では、C#のクラス(class)の作り方を、最小の宣言、命名規則、namespaceとファイル配置、Visual StudioとVS Code(.NET CLI)での新規作成手順、実行可能なサンプル、そして作成時のチェックポイントまで順に解説しました。
クラスはオブジェクト指向の設計図であり、プロパティやメソッド、コンストラクタを組み合わせることで現実世界の概念をわかりやすく表現できます。
まずは小さなクラスから作成し、インスタンス化して実行結果を確かめる流れに慣れてください。
慣れてきたら、プロジェクト全体でnamespaceや命名を整え、規模が大きくなっても読みやすいコード基盤を築いていきましょう。