IRONSOFTWAREHOME
開発者向けアップデート

C# Sealed Class(開発者向けの動作方法)

Jacob Mellor、Ironチームの最高技術責任者(CTO)
Jacob Mellor
Updated: 2026年4月21日

オブジェクト指向プログラミングの世界では、C# 言語は開発者に汎用性のあるツールセットを提供し、堅牢なソフトウェアを設計し実装することができます。 クラス継承に追加の制御層を加える機能のひとつは、sealed クラスの概念です。 Sealed クラスは、継承階層を制限する独自の方法を提供し、特定のシナリオで有益なセキュリティとカプセル化のレベルを提供します。 この記事では、C# sealed クラスの詳細に触れ、IronPDF の Iron Software からの NuGet パッケージについても探ります。

Sealed クラスと Sealed メソッドとは何ですか?

Sealed クラス: C# では、sealed クラスは継承できないクラスです。 開発者はsealedキーワードを使用することで、他のクラスが密封されたクラスから派生または拡張するのを防ぐことができます。 この意図的な制限により、sealed クラスが他のクラスの基底クラスとして使用されることを防ぎ、継承階層の範囲を制限します。 Sealed クラスは、開発者がクラスの構造を制御し確定したい場合によく使用されます。

次の例を考えてみましょう。

public sealed class Animal
{
    public string Species { get; set; }

    public void MakeSound()
    {
        Console.WriteLine("Generic animal sound");
    }
}

// The following code will cause a compilation error because 'Animal' is sealed and cannot be inherited:
// public class Dog : Animal // Error: Cannot inherit from sealed class 'Animal'
// {
// }

構造体とは異なり、密封クラスは暗黙的に密封されているため、上記のようにsealedキーワードを使用して宣言する必要があります。 この例では、Animalクラスが密封として宣言されており、他のクラスがそれを継承することができません。

Sealed Method: In addition to sealing entire classes, C# also allows developers to seal individual methods within a class. Sealed メソッドは、派生クラスによってオーバーライドできないメソッドです。これにより、アプリケーションの論理の中でメソッドの動作がすべてのサブクラス間で一貫していることが保証されます。

メソッドを密封するには、sealed修飾子を使用します:

public class Animal
{
    public string Species { get; set; }

    // A virtual method allows derived classes to override it.
    public virtual void MakeSound()
    {
        Console.WriteLine("Generic animal sound");
    }
}

public class Dog : Animal
{
    // The sealed override prevents further overriding of this method.
    public sealed override void MakeSound()
    {
        Console.WriteLine("Bark!");
    }
}

sealedキーワードはその後のサブクラスで基底クラスの仮想メソッドのさらなるオーバーライドを防ぎます。

Sealed クラスとクラス メンバー: Sealed クラスは、プロパティ、メソッド、およびイベントなどの sealed メンバーを含めることもできます。 この sealed クラスと sealed メンバーの組み合わせにより、クラスの動作と構造に対するコントロールの高いレベルが確立されます。

次の例を考えてみましょう。

public sealed class ControlledClass
{
    // A sealed property that prevents overriding.
    public sealed string ControlledProperty { get; set; }

    // A method that cannot be redefined by derived classes.
    public virtual sealed void ControlledMethod()
    {
        // Method implementation
        Console.WriteLine("Executing controlled method.");
    }

    // A sealed event that cannot be subscribed to or raised by derived classes.
    public sealed event EventHandler ControlledEvent;

    // Sealed indexers, if applicable
    public sealed string this[int index]
    {
        get { return "Value"; }
        set 
        { 
            // Setter implementation 
        }
    }
}

この例では、ControlledClassのあらゆる側面が密封されており、プロパティ、メソッド、イベント、さらにはインデクサーも該当します。 このシールレベルは強固で改変不可能な構造を提供し、クラスの設計が固定されるべきシナリオに理想的です。

シールド クラスの背後にある理由

コード セキュリティ: Sealed クラスは、無許可のアクセスや変更を防ぐことでコード セキュリティに貢献します。 クラスがシールされていると、明確なインターフェイスと動作を持つクローズド エンティティとして機能します。 このカプセル化により、コードベースの安定性やセキュリティを潜在的に損なう可能性のある意図しない副作用や変更のリスクが最小限に抑えられます。

設計の一貫性: 大規模なコードベースやフレームワークでは、設計の一貫性の維持が非常に重要です。 シールされたクラスは、固定された構造を持つ基礎となるビルディング ブロックとして機能し、意図しない変更の可能性を減らします。 これは、クラスがシステムのコアコンポーネントとして機能し、その動作が異なるモジュール間で一貫しているべきであるシナリオに特に有益です。

Best Practices for Using Sealed Class

  1. シールされたクラスを控えめに使用する: シールされたクラスは利点を提供しますが、慎重に使用する必要があります。 Sealed クラスの過剰使用は、固定されたコードになる可能性があります。
  2. 意図を文書化する: クラスまたはメソッドをシールする際は、この決定の背後にある意図を文書化することが重要です。 特定のクラスがシールされている理由や、その選択につながった設計上の考慮事項を説明します。
  3. 将来の拡張性を考慮する: クラスをシールする前に、将来の要件が拡張性を必要とする可能性を考慮してください。 クラスが拡張される必要がある可能性がある場合、シールすることは将来の開発を妨げる可能性があります。
  4. 安定性のためにシールされたメソッドを使用する: メソッドのコアの動作を異なるサブクラスで安定させる必要がある場合、メソッドをシールすることは有益です。 これにより、コードの予測可能性が向上します。
  5. 抽象化できない: Sealed クラス/メソッドは、抽象クラス/メソッドとして抽象化することはできません。抽象クラスは他のクラスによって継承されるように設計されていますが、シールされたクラスは継承を制限します。

IronPDFの紹介

C# シールドクラス(開発者向けの動作方法):図1 - IronPDFウェブページ

IronPDF は、Iron Software の C# PDF ライブラリであり、最新の PDF ジェネレーターおよびリーダーです。

インストール

IronPDF は、NuGet パッケージ マネージャー コンソールまたは Visual Studio パッケージ マネージャーを使用してインストールできます。 以下はコンソール用のコマンドです:

PM > Install-Package IronPdf

または、NuGetパッケージマネージャーを使用してIronPDFをインストールするには、NuGetパッケージマネージャーの検索バーに"IronPDF"と入力します。

C# シールドクラス(開発者向けの動作方法):図2 - NuGetパッケージマネージャーを介してIronPDFライブラリをインストール

IronPDF とシールドされたクラス

Sealed キーワードと IronPDF は連携して、サブクラス ライブラリまたは派生ライブラリが継承メンバーをオーバーライドできないようにし、PDF を生成することもできます。

namespace OrderBy
{
    public class Program
    {
        static void Main()
        {
            Console.WriteLine("Demo Sealed Class and IronPdf");
            var dog = new Dog();
            dog.MakeSound();
            dog.Print();
        }
    }

    // Base class
    public class Animal
    {
        public string Species { get; set; }

        public virtual void MakeSound()
        {
            Console.WriteLine("Generic animal sound");
        }

        public virtual void Print()
        {
            Console.WriteLine("Generic animal Print");
        }
    }

    public class Dog : Animal
    {
        // Sealed override ensures method cannot be overridden in further derived classes.
        public sealed override void MakeSound()
        {
            Console.WriteLine("Bark!");
        }

        public sealed override void Print()
        {
            var pdfRenderer = new ChromePdfRenderer();
            string content = @"
            <!DOCTYPE html>
            <html>
            <body>
                <h1>Hello, Dog!</h1>
                <p>This is Print from Derived class.</p>
                <p>Print Animal Dog</p>
                <p>Print Animal Sound: Bark</p>
            </body>
            </html>";
            
            pdfRenderer.RenderHtmlAsPdf(content).SaveAs("dog.pdf");
        }
    }
}

C# シールドクラス(開発者向けの動作方法):図3 - 実行コマンドとそれに伴うコンソールメッセージを示すコンソール出力

以下は IronPDF から生成された PDF です。

C# シールドクラス(開発者向けの動作方法):図4 - 前述のコード例で生成された出力PDF

ライセンス (無料トライアル利用可能)

IronPDF. このキーはappsettings.jsonに配置する必要があります。

{
    "IronPdf.LicenseKey": "your license key"
}
JSON

トライアルライセンスを取得するには、メールアドレスを提供してください。

結論

C# sealed クラスは、開発者に継承階層を制御し、特定のクラスやそのメンバーを拡張やオーバーライド不可能にする強力なメカニズムを提供します。 Sealed クラスの使用は慎重に考慮されるべきですが、機能をカプセル化し、意図しない変更を防ぐ効果的な手段を提供します。 Sealed クラスとメソッドの概念を理解することで、開発者はこの制限を適用すべき状況を判断し、メンテナンス性、セキュリティ性、一貫性のあるソフトウェア システムの実現に寄与することができます。 また、IronPDF と共に PDF ドキュメントを印刷することもできます。

Jacob Mellor、Ironチームの最高技術責任者(CTO)
最高技術責任者(CTO)

ジェイコブ・メラーはIron Softwareの最高技術責任者(CTO)であり、C# PDFテクノロジーを開拓する先見的なエンジニアです。Iron Softwareのコアコードベースを支えるオリジナル開発者として、彼は創業以来、会社の製品アーキテクチャを形成し、CEOのCameron Rimingtonとともに、会社をNASA、Tesla、および世界的な政府機関にサービスを提供する50人以上の会社に変えました。1999年にロンドンで最初のソフトウェアビジネスを開業し、2005年に最初 for .NETコンポーネントを作成した後、Microsoftのエコシステム全体で複雑な問題を解決することを専門としました。

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

OR
bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。
PDF用C# NuGetライブラリ
NuGetでインストール

バージョン: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. ソリューションエクスプローラーで参照を右クリックし、NuGetパッケージを管理を選択
  2. ブラウズを選択し、"IronPDF"を検索
  3. パッケージを選択してインストール
C# PDF DLL
DLLをダウンロード

バージョン: 2026.9

またはここからWindowsインストーラーをダウンロードする。

  1. IronPDFを~/Libsなどの場所に解凍し、ソリューションディレクトリ内に配置する
  2. Visual Studioソリューションエクスプローラーで参照を右クリックし、"IronPDF.dll"をブラウズして選択

ライセンスは$999から