閉じる

C#のクラス(class)の作り方入門 基本構文と新規作成手順

C#のクラス(class)の作り方を、概念からファイル追加の実手順、基本構文、よくあるつまずきの対処まで順番に解説します。

最小のクラス宣言から始め、命名規則、namespace(名前空間)とファイル配置の考え方、Visual StudioとVS Code(.NET CLI)での新規作成方法、実行できるサンプルまで丁寧に説明します。

C#のクラス(class)とは?

オブジェクト指向とクラスの関係

クラスはオブジェクト指向における設計図です。

たとえば「人」という概念をプログラムで扱いたい時に、名前や年齢といった情報(プロパティ)と、あいさつするなどの振る舞い(メソッド)をひとまとまりにした型を定義します。

定義したクラスから具体的な実体を作る操作をインスタンス化と呼び、その実体をインスタンス(オブジェクト)と呼びます。

C#でクラスを使うメリット

クラスを使うと、関連するデータと処理をまとめて表現できるため、読みやすく変更に強いコードになります。

再利用性が高まり、プロジェクトが大きくなっても拡張しやすく、テストもしやすくなります。

現実世界のモデルやアプリの機能を、自然な形でコードに写し取れる点も大きな利点です。

C# classの基本構文

最小のクラス宣言

最小のクラスは、名前と波かっこだけで宣言できます。

以下は空のクラスの例です。

C#
// ファイル: Person.cs
// C# 10以降のファイルスコープnamespaceを使用
namespace MyApp;

// 最小のクラス宣言(中身が空)
public class Person
{
    // 後からプロパティやメソッドを追加できます
}

この段階では機能はありませんが、コンパイル可能な「型」ができました。

必要に応じてプロパティやメソッド、コンストラクタなどを追加していきます。

namespaceとファイル配置

C#ではクラスに論理的な住所としてnamespace(名前空間)を付けます。

これにより、クラス名の衝突を避け、フォルダー構造と対応させることで見通しが良くなります。

C# 10以降はファイルスコープnamespaceが推奨されます。

C#
// ファイルスコープnamespace (C# 10+ 推奨)
namespace MyApp.Models;

public class Person { }
C#
// ブロックスコープnamespace (従来の書き方)
namespace MyApp.Models
{
    public class Person { }
}

クラスのファイル配置とnamespaceは一致させるのが一般的です。

以下は推奨例です。

ファイルパス推奨namespace補足
Models/Person.csMyApp.Modelsフォルダーとnamespaceをそろえると検索性が上がります
Services/UserService.csMyApp.Services物理ファイル名とクラス名は一致させるのが慣例です

なお、ファイル名とクラス名は必ずしも一致しなくてもコンパイルは可能ですが、メンテナンス性のため一致させるのが実務では標準的です。

クラス名の命名規則(PascalCase)

C#のクラス名はPascalCase(各単語の先頭を大文字)が基本です。

意味が明確で、略語は避けます。

対象推奨例避けたい例理由
クラス名Person, OrderItem, UserServiceperson, order_item, USERC#では型はPascalCaseで表記する習慣があります
省略HttpClientHttpCli, HC不必要な省略は可読性を下げます
先頭記号_Person1Person記号や数字開始は避けるべきです

プロジェクト全体でスタイルを統一するため、.editorconfigやアナライザーを活用すると良いです。

C#のクラスの作り方(新規作成手順)

Visual Studioでクラスを追加

Visual Studioを利用する場合はGUIからクラスファイルを追加できます。

STEP1
プロジェクトの作成

コンソールアプリなどのプロジェクトを作成します。

プロジェクトの作成についてわからない場合は、以下の記事を参考にしてください。

STEP2
クラスの作成

ソリューションエクスプローラーで対象プロジェクトを右クリックし、追加 > クラス… を選びます。

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

生成されたファイルに、新しいクラス本体を記述します。

これでクラスを追加できます。

クラス追加の画面はShift+Alt+Cのショートカットキーでも開けます。

VS Code(.NET CLI)でクラスファイルを作成

VS Codeと.NET CLIを使う場合はターミナル操作が中心です。

Shell
# 1) 新規コンソールアプリを作成
dotnet new console -n MyApp
cd MyApp

# 2) モデル用フォルダーとクラスファイルを作成
mkdir Models
code Models/Person.cs  # エディタで開く(任意)

以下のようにクラスを記述します(Visual Studioでも同様です)。

サンプルコードと実行結果

ここでは、クラスの作り方に加えて、最低限の使い方(インスタンス生成、プロパティ、コンストラクタ)が一目でわかる実行例を示します。

ここでは、MyAppというプロジェクトで、Person.csというクラスファイルを追加したものとします。

C#
// ファイル: 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} 歳です。";
    }
}
C#
// ファイル: 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でインスタンスを生成し、プロパティやメソッドを使って動作させるのが基本的な流れです。

作成時のチェックリストと注意点

クラスが認識されない時の確認

クラスを追加したのに利用側から見えない場合、次の観点を順に確認します。

  1. ビルドが成功するかを確認します。まずはプロジェクトをクリーン/リビルドし、コンパイルエラーを解消します。
  2. ファイルがプロジェクトに含まれているかを確認します。Visual StudioではプロパティのビルドアクションがCompileになっているかを見ます。
  3. namespaceusingが正しいかを確認します。利用側のファイルに適切なusingがあるか、または完全修飾名で参照できるかを試します。
  4. アクセス修飾子が適切かを確認します。同一プロジェクト内ならpublicでなくても見えますが、別プロジェクトから参照するクラスはpublicが必要です。
  5. 別アセンブリの場合はプロジェクト参照が設定されているかを確認します。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)。
  • 必要に応じてエイリアスを使い、呼び出し側で明示的に使い分けます。
C#
// 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や命名を整え、規模が大きくなっても読みやすいコード基盤を築いていきましょう。

この記事を書いた人
エーテリア編集部
エーテリア編集部

C#の入門記事を中心に、開発環境の準備からオブジェクト指向の基本まで、順を追って解説しています。ゲーム開発や業務アプリを目指す人にも役立ちます。

クラウドSSLサイトシールは安心の証です。

URLをコピーしました!