.NET ヘルプ

C# ベースコンストラクター呼び出し(開発者向けの動作方法)

更新済み 6月 6, 2024
共有:

継承を扱う際、基本クラスと派生クラスの関係は、どのように進行するかに複雑さをもたらします。 コンストラクター と呼ばれます。 派生クラスから基底クラスのコンストラクターを呼び出す方法を理解することは、オブジェクトの状態と振る舞いを適切に管理するために役立ちます。

このガイドでは、継承階層におけるコンストラクタ呼び出しに関連するさまざまなシナリオやニュアンスに焦点を当て、その概念を包括的に探求します。 また、次の点についても探求します IronPDF トピックに関連するコード例を含むライブラリ。

基本概念:クラスコンストラクタと継承

C#のコンストラクタは、クラス内のオブジェクトを初期化する特別なメソッドです。 クラスが別のクラスから継承する場合、基底クラスと呼ばれるクラスから、派生クラスも基底クラスのコンストラクタを継承したり、オーバーライドしたりすることができます。 派生クラスから基底クラスのコンストラクタメソッドを呼び出すメカニズムにより、派生クラスがその初期化を追加する前に基底クラスが適切に初期化されることが保証されます。

コンストラクタ呼び出しにおける 'base' キーワード

C#のbaseキーワードは、派生クラス内で基底クラスを参照するために使用されます。 基底クラスのコンストラクターを呼び出す必要がある場合、派生クラスのコンストラクターではなく基底クラスのコンストラクターを呼び出すときに特に便利です。 base キーワードを使用すると、継承されたコンストラクターが実行する適切なコンストラクターボディを使用するために、どの基底クラスのコンストラクターを実行するかを指定できます。 この機能は、基底クラスがパブリックな引数なしコンストラクタを持たない場合や、基底クラスで特定の初期化を行う必要がある場合に不可欠です。

次のシナリオを考えてみてください。ある基底クラスから派生したパブリッククラスがあります。 基底クラスにはプライベートコンストラクターがあるか、整数パラメーターを取るパブリックコンストラクターがあるかもしれません。

public class BaseClass {
    public int b;
    public BaseClass(int b) {
        this.b = b;
    }
}
public class BaseClass {
    public int b;
    public BaseClass(int b) {
        this.b = b;
    }
}
Public Class BaseClass
	Public b As Integer
	Public Sub New(ByVal b As Integer)
		Me.b = b
	End Sub
End Class
VB   C#

派生クラスは、このコンストラクタを呼び出して、そのオブジェクトの基本クラス部分を適切に初期化する必要があります。

public class DerivedClass : BaseClass {
    public DerivedClass(int b) : base(b) {
        // Additional initialization for DerivedClass
    }
}
public class DerivedClass : BaseClass {
    public DerivedClass(int b) : base(b) {
        // Additional initialization for DerivedClass
    }
}
Public Class DerivedClass
	Inherits BaseClass

	Public Sub New(ByVal b As Integer)
		MyBase.New(b)
		' Additional initialization for DerivedClass
	End Sub
End Class
VB   C#

この例では: base(なにか翻訳する内容を提供してください。)「明示的にベースクラスのコンストラクターをパラメーターbで呼び出します。」 これは、派生クラスのコンストラクタが本体に進む前に、基底クラスのフィールドb` が初期化されることを保証します。

詳細な使用事例とバリエーション

複数のコンストラクタの処理

しばしば、基底クラスおよび派生クラスの両方に複数のコンストラクタが存在することがあります。 派生クラスは、呼び出す基底クラスのコンストラクタを選択できます。 この選択は、基底クラスのコンストラクタが異なる種類の初期化を行う場合に重要です。

public class BaseClass {
    public BaseClass() {
        // Default constructor
    }
    public BaseClass(int b) {
        this.b = b;
    }
}
public class DerivedClass : BaseClass {
    public DerivedClass() : base() {
        // Calls the parameterless constructor of the base class
    }
    public DerivedClass(int b) : base(b) {
        // Calls the base class constructor that takes an int
    }
}
public class BaseClass {
    public BaseClass() {
        // Default constructor
    }
    public BaseClass(int b) {
        this.b = b;
    }
}
public class DerivedClass : BaseClass {
    public DerivedClass() : base() {
        // Calls the parameterless constructor of the base class
    }
    public DerivedClass(int b) : base(b) {
        // Calls the base class constructor that takes an int
    }
}
Public Class BaseClass
	Public Sub New()
		' Default constructor
	End Sub
	Public Sub New(ByVal b As Integer)
		Me.b = b
	End Sub
End Class
Public Class DerivedClass
	Inherits BaseClass

	Public Sub New()
		MyBase.New()
		' Calls the parameterless constructor of the base class
	End Sub
	Public Sub New(ByVal b As Integer)
		MyBase.New(b)
		' Calls the base class constructor that takes an int
	End Sub
End Class
VB   C#

このセットアップでは、DerivedClass が基底クラスのコンストラクターに対応することによって柔軟性を提供し、オブジェクト作成の際のニーズに応じて、BaseClass によって提供されるすべての初期化形式にアクセスできるようにします。

IronPDFの紹介

IronPDF は、.NET アプリケーション内でPDFドキュメントの作成、読み取り、編集を必要とする開発者のために設計されたC#ライブラリです。 IronPDF を使用する主な利点は、その能力です。 HTMLから直接PDFを生成CSS、画像、JavaScript。 ライブラリはさまざまな.NETフレームワークをサポートしており、Webフォーム、サーバーアプリケーション、コンソールアプリなど、多数のプロジェクトタイプと互換性があります。

コード例

IronPDFを使用してHTMLからPDFを作成する方法をC#で示すために、IronPDFを初期化するベースクラスと、この初期化を使用してPDFを作成する派生クラスを使用できます。 以下に、ベースコンストラクタを使用した構造の例を示します:

using IronPdf;
// Base class for PDF generation
public class PdfGenerator
{
    protected ChromePdfRenderer Renderer;
    // Base constructor initializes the HTML to PDF renderer
    public PdfGenerator()
    {
        Renderer = new ChromePdfRenderer();
        // Additional configuration
    }
}
// Derived class uses the base class to generate a specific PDF
public class SpecificPdfGenerator : PdfGenerator
{
    public void CreateSimplePdf(string htmlContent, string filePath)
    {
        // Uses the Renderer from the base class
        var pdfDocument = Renderer.RenderHtmlAsPdf(htmlContent);
        pdfDocument.SaveAs(filePath);
    }
}
// Usage
class Program
{
    static void Main(string[] args)
    {
        License.LicenseKey = "License-Key";
        var htmlContent = "<h1>Hello, IronPDF!</h1>";
        var filePath = "example.pdf";
        var pdfCreator = new SpecificPdfGenerator();
        pdfCreator.CreateSimplePdf(htmlContent, filePath);
    }
}
using IronPdf;
// Base class for PDF generation
public class PdfGenerator
{
    protected ChromePdfRenderer Renderer;
    // Base constructor initializes the HTML to PDF renderer
    public PdfGenerator()
    {
        Renderer = new ChromePdfRenderer();
        // Additional configuration
    }
}
// Derived class uses the base class to generate a specific PDF
public class SpecificPdfGenerator : PdfGenerator
{
    public void CreateSimplePdf(string htmlContent, string filePath)
    {
        // Uses the Renderer from the base class
        var pdfDocument = Renderer.RenderHtmlAsPdf(htmlContent);
        pdfDocument.SaveAs(filePath);
    }
}
// Usage
class Program
{
    static void Main(string[] args)
    {
        License.LicenseKey = "License-Key";
        var htmlContent = "<h1>Hello, IronPDF!</h1>";
        var filePath = "example.pdf";
        var pdfCreator = new SpecificPdfGenerator();
        pdfCreator.CreateSimplePdf(htmlContent, filePath);
    }
}
Imports IronPdf
' Base class for PDF generation
Public Class PdfGenerator
	Protected Renderer As ChromePdfRenderer
	' Base constructor initializes the HTML to PDF renderer
	Public Sub New()
		Renderer = New ChromePdfRenderer()
		' Additional configuration
	End Sub
End Class
' Derived class uses the base class to generate a specific PDF
Public Class SpecificPdfGenerator
	Inherits PdfGenerator

	Public Sub CreateSimplePdf(ByVal htmlContent As String, ByVal filePath As String)
		' Uses the Renderer from the base class
		Dim pdfDocument = Renderer.RenderHtmlAsPdf(htmlContent)
		pdfDocument.SaveAs(filePath)
	End Sub
End Class
' Usage
Friend Class Program
	Shared Sub Main(ByVal args() As String)
		License.LicenseKey = "License-Key"
		Dim htmlContent = "<h1>Hello, IronPDF!</h1>"
		Dim filePath = "example.pdf"
		Dim pdfCreator = New SpecificPdfGenerator()
		pdfCreator.CreateSimplePdf(htmlContent, filePath)
	End Sub
End Class
VB   C#

このコード構造は再利用性とモジュラリティを促進し、大規模なアプリケーション内で異なるPDF生成のニーズを管理しやすくします。

出力

C# ベースコンストラクターの呼び出し (開発者向けの動作説明): 図1 - 前のコード例から出力されたPDF

結論

C#の継承階層におけるコンストラクターの扱い方をマスターすることで、開発者はより信頼性が高く、保守性のあるコードを書くことができます。 base キーワードの役割を理解し、複数のコンストラクターやプライベートコンストラクター、静的メソッドなどの特別なシナリオを効果的に管理することにより、複雑なオブジェクト階層でクラスが正しく初期化されるようにすることができます。

これは、C#のオブジェクト指向プログラミングに取り組む初心者および経験豊富な開発者の両方にとって重要な理解です。 IronPDF 購入を決定する前に機能をテストしたい開発者向け。 試用期間後、IronPDFがニーズを満たしていると判断した場合、 ライセンス $749から始まります。

< 以前
C#で文字列を整数に解析する方法(開発者向けの仕組み)
次へ >
GraphQL C# (開発者向けの仕組み)

準備はできましたか? バージョン: 2024.9 新発売

無料のNuGetダウンロード 総ダウンロード数: 10,659,073 View Licenses >