閉じる

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

プログラムの規模が大きくなるほど、データと処理を整理してまとめることが重要になります。

C#のクラス(class)は、そのための基本となる仕組みです。

本記事では、クラスの役割と作り方の基本から、Visual StudioやVS Codeでの新規作成手順、そして初心者がつまずきやすい注意点までを、サンプルコードと実行結果を交えて丁寧に解説します。

C#のクラス(class)の基本

クラスの役割とメリット

クラスは、データ(状態)と処理(ふるまい)をひとまとめにする設計図です。

クラスを使うことで、似た性質のものを1つの型として定義し、何度でも同じ構造のインスタンス(オブジェクト)を作成できます。

これにより、プログラムの見通しが良くなり、変更や拡張が容易になります。

特に初心者の方は、データだけを扱うのではなく、そのデータに対する操作もクラスの中に含める考え方を身につけると、保守性や再利用性が飛躍的に向上します。

どんな時にクラスを作るか

以下のような場面では、クラスを作ることが有効です。

たとえば、アプリ内で「ユーザー」「商品」「注文」のように実世界の概念を表現したい時、または「設定」「ログ」「計算ロジック」のようにまとまった責務を分離したい時にクラスが役立ちます。

処理が増え、関連するデータが散らばってきたと感じたら、それらを1つのクラスにまとめることを検討します。

C#のクラス(class)の基本構文

最小のクラス定義(空のクラス)

まずは最小の形から見ていきます。

これは中身のない空のクラスです。

C#
// 空のクラス定義の最小例
public class EmptyClass
{
}

最小のクラスであっても、{ }で囲むブロック構造が必要です。

クラスの外側に修飾子(例: public)を書く点にも注意します。

名前空間(namespace)の書き方

クラスは通常、名前空間(namespace)の中に配置して整理します。

プロジェクトやフォルダ構造に合わせて名前空間を付与すると、クラスの重複を避け、参照をわかりやすく管理できます。

C#
// 名前空間を使ったクラス定義の例
namespace MyApp.Models
{
    public class User
    {
    }
}

C# 10以降ではファイル先頭にnamespace MyApp.Models;のようにセミコロン区切りで宣言する「ファイルスコープの名前空間」も使えます。

C#
// ファイルスコープの名前空間(モダンな書き方)
namespace MyApp.Models;

public class Product
{
}

クラス名の付け方(パスカルケース)

C#ではクラス名はパスカルケース(PascalCase)が推奨です。

英単語の先頭を大文字でつなげます。

推奨(正)非推奨(誤)
Personperson
OrderItemorder_item
AppConfigappconfig

意味のある英単語を使い、略語をむやみに使わないことがわかりやすさにつながります。

ファイル名とクラス名をそろえる

C#では、1つのクラスを1つのファイルに置き、ファイル名とクラス名を一致させるのが一般的です。

例えば、PersonクラスはPerson.csというファイルに定義します。

これにより、後から見直す時にクラスを見つけやすくなります。

ファイル名とクラス名が一致しないと、チーム開発で混乱の原因になります

基本構文(サンプルコード)

ここでは、クラスの定義からインスタンス生成、プロパティの利用、コンストラクタでの初期化、メソッド実行、出力までを一通り体験できる最小構成の例を示します。

C#Person.cs
// Person.cs
// 人物を表すクラスの基本例。プロパティとコンストラクタ、メソッドを定義します。
namespace MyApp.Models
{
    public class Person
    {
        // 自動実装プロパティ。外部から読み取り・書き込みできるよう public にしています。
        public string Name { get; set; }

        // 年齢はマイナスにならないようにしたい場合などは set を private にしてコントロールする設計も可能です。
        public int Age { get; private set; }

        // コンストラクタ。インスタンス生成時に初期化を行います。
        public Person(string name, int age)
        {
            Name = name;
            // 受け取った age を簡易チェックした上で設定
            Age = age < 0 ? 0 : age;
        }

        // ふるまい(メソッド)の例。自己紹介の文字列を返します。
        public string GetGreeting()
        {
            return $"Hello, I am {Name} and I am {Age} years old.";
        }

        // 文字列化。Console.WriteLine(person) と書いた時の見え方を整えます。
        public override string ToString()
        {
            return $"{Name} ({Age})";
        }
    }
}
C#Program.cs
// Program.cs
// Person クラスを使う側のコード。エントリポイントから実行します。
using System;
using MyApp.Models; // Person の名前空間を参照

class Program
{
    static void Main(string[] args)
    {
        // インスタンス(オブジェクト)の生成。コンストラクタに必要な情報を渡します。
        var person = new Person("Taro", 20);

        // プロパティにアクセス。必要に応じて値を変更できます。
        person.Name = "Taro Yamada";

        // メソッド呼び出しと出力
        Console.WriteLine(person.GetGreeting());
        Console.WriteLine(person); // ToString() の結果が表示されます
    }
}
実行結果
Hello, I am Taro Yamada and I am 20 years old.
Taro Yamada (20)

この例のように、クラスは「状態」(Name, Age)と「ふるまい」(GetGreeting, ToString)をまとめて表現します。

使う側(Program.cs)は、コンストラクタで初期化し、プロパティやメソッドを通じて操作します。

クラス(class)の新規作成手順

Visual Studioでクラスを追加する

Visual StudioではGUI操作で簡単にクラスファイルを追加できます。

STEP1
プロジェクトの作成

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

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

STEP2
クラスの作成

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

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

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

このように、ソリューションエクスプローラーでプロジェクトを右クリックし、「追加」→「新しい項目」→「クラス」を選び、名前にPerson.csのように入力して作成します。

作成直後はデフォルトの名前空間が付与されるため、フォルダ構成と一致しているか確認しておくと良いです。

クラス追加後は、プロパティやコンストラクタ、メソッドを順に記述します。

まずは空のクラスから始め、必要な要素を段階的に追加すると、誤りが混入しにくくなります。

VS Codeでクラスファイルを作る

VS Codeではコマンドラインでプロジェクトを作成し、エディタでファイルを追加します。

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

cd MyApp

# モデル用のフォルダを作成し、クラスファイルを作る
mkdir Models
code Models/Person.cs
ソースファイルの作成

プロジェクトの作成はコマンドで行うのが基本ですが、ファイルの作成はサイドバーのファイルエクスプローラーから追加しても問題ありません。

エディタでPerson.csを作成し、namespace MyApp.Models;のような名前空間を先頭に記述します。

次に、クラス本体を定義します。

最後にProgram.csusing MyApp.Models;を追加してクラスを利用します。

フォルダ構成とnamespaceの対応を決める

フォルダと名前空間を対応づけると、規模が大きくなっても探しやすくなります。

たとえば、Modelsフォルダの中はMyApp.ModelsServicesフォルダの中はMyApp.Servicesというようにします。

フォルダパス名前空間例
MyApp/Models/Person.csMyApp.Models
MyApp/Services/UserService.csMyApp.Services
MyApp/Controllers/HomeController.csMyApp.Controllers

プロジェクト開始時にルールを決めておくと、チーム開発や長期運用で効率的です。

作成時のコツと注意点(初心者向け)

1ファイル1クラスで見やすくする

初心者のうちは、1ファイルに1クラスを原則にすると、コードの位置を把握しやすく、レビューや修正も容易になります。

同名のクラスを複数ファイルに分割する機能もありますが、慣れるまでは使いません。

usingとnamespaceを整理する

クラスを利用する側では、必要な名前空間に対してusingを追加します。

不要なusingは削除しておくとコンパイルがわずかに速くなり、可読性も上がります。

IDEの「不要なusingの削除」機能を活用すると、自動で整理できます。

C#
// Program.cs の先頭例
using System;
using MyApp.Models; // Person を使うために必要

// 不要なら以下のような using は削除
// using System.Text; // 今は使っていない

波かっこ{ }の閉じ忘れに注意

クラスやメソッドは{ }で囲みます。

閉じ忘れるとコンパイルエラーになります。

エディタの自動補完やフォーマッタを有効にすると、構文エラーの早期発見に役立ちます。

C#
// 閉じカッコの不足例(意図的に誤り)
public class Oops
{
    public void DoSomething()
    {
        Console.WriteLine("Hello");
// } が2つ足りない

この場合、ビルド時にCS1513: } が必要ですのようなエラーが表示されます。

ビルドエラー時のチェックポイント

ビルドに失敗したら、エラーメッセージの先頭にあるコード(例: CS1513)と行番号を手がかりに、直前に書いた変更点を重点的に見直します。

特に以下を確認すると直りやすいです。

  • namespaceとクラスの{ }の対応が取れているか
  • usingが不足していないか(型が見つからないエラー)
  • ファイル名とクラス名が一致しているか
  • セミコロン;の付け忘れがないか

参考として、ビルドエラーの出力例を示します。

実行結果
Program.cs(6,1): error CS1513: } が必要です
Program.cs(10,22): error CS0103: 現在のコンテキストに 'person' という名前は存在しません

この場合、まずはProgram.csの6行目付近で}の不足を解消し、その結果として発生している二次的なエラー(変数の未定義など)も連鎖的に解決します。

まとめ

クラス(class)は、C#のプログラムを整理するための最重要の基本要素です。

パスカルケースの命名や、ファイル名とクラス名をそろえる慣習、名前空間での整理を身につけることで、コードは自然と読みやすくなります。

まずは空のクラスを作り、プロパティやコンストラクタ、メソッドを一つずつ追加していく流れに慣れてください。

Visual StudioやVS Codeの支援機能も活用し、ビルドエラーはメッセージと行番号に従って落ち着いて修正することが上達の近道です。

今回の基礎を足場に、今後はクラス同士の関係や拡張へと理解を広げていきましょう。

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

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

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

URLをコピーしました!