.NET ヘルプ

C# Protected(開発者向けの使用方法)

C#は、マイクロソフトによって開発された、モダンなオブジェクト指向で安全な型付けを特徴とするプログラミング言語です。 その多用途性で広く認識されているC#は、デスクトップソフトウェアからUnityを使用したゲーム開発に至るまで、様々なアプリケーションで使用されています。 効果的なC#プログラミングの基礎の一つは、アクセス修飾子を理解することです。これは、クラスメンバーがクラス内およびクラス外でどのようにアクセスされるかを指示します。

C#のアクセス修飾子は、メンバー宣言に使用されるキーワードであり、コードの他の部分からのアクセス性を制御します。 最も一般的に使用されるアクセス修飾子はpublicprivate、およびprotectedであり、それぞれがオブジェクト指向プログラミングのデータの整合性とカプセル化の原則を保護するために独自の役割を果たします。

初心者にとって、特にC#プログラミングにおけるprotectedというアクセス修飾子の概念を理解することは重要です。 これらの修飾子は、クラスの外部とのインターフェイスを定義するのに役立つだけでなく、オブジェクト指向プログラミングの基本概念である継承においても重要な役割を果たします。 protectedが他の修飾子であるprivate protectedprotected internalとどのように連携するかを理解することは、堅牢で保守性の高いC#アプリケーションを構築するための鍵です。

アクセス修飾子の基本

アクセス修飾子とは何ですか?

C#のアクセス修飾子は、クラスメンバー(メソッド、プロパティ、変数など)や型のアクセスレベルを設定するキーワードです。これらの修飾子は、クラスのメンバーがどこでどのようにアクセスできるかを制御し、オブジェクト指向プログラミングにおけるカプセル化の実装において重要な役割を果たします。

異なるアクセス修飾子の概要

C#には、特定のシナリオ用に設計された複数のアクセス修飾子があります。

  • Public アクセス修飾子: public 修飾子は、同じプロジェクト内、またはそれを参照する別のプロジェクト内の他のコードからクラスメンバーへのアクセスを許可します。 それは最も制限の少ない修飾子です。
  • プライベートアクセス修飾子: 逆に、private 修飾子は、クラスメンバーへのアクセスを同じクラス内のみに制限します。 それは最も制限的な修飾子であり、オブジェクトの内部状態を隠すために重要です。
  • Protected アクセス修飾子protected アクセス修飾子は、クラスメンバーをそのクラスおよび任意の派生クラス内でアクセス可能にします。 これは特に継承シナリオにおいて有用です。
  • Internal アクセス修飾子: internal 修飾子を持つメンバーは、同じアセンブリ内でアクセス可能ですが、他のアセンブリからはアクセスできません。

    これらの基本的なアクセス修飾子を理解することは、C#における継承やポリモーフィズムなどのより複雑な概念の基礎を築くものであり、クラスへのアクセスを制御することが重要になります。

保護された修飾子を理解する

C#でのプロテクトアクセス修飾子の役割

C#におけるprotected修飾子は、オブジェクト指向プログラミングにおける基本的な概念です。 それは、クラスメンバーが自身のクラス内だけでなく、それから派生したクラスでもアクセス可能であることを許可します。 このレベルのアクセシビリティは、メンバーをプログラムの他の部分から隠したまま拡張機能を許可したい場合に欠かせません。

派生クラスと同一クラス内でのアクセス権

保護されたメンバーは継承において重要な役割を果たします。 それらは宣言された同じクラスや、含まれるクラスから派生した他のクラスでもアクセス可能です。 これは、保護されたメンバーを持つ基本クラスがある場合、このメンバーはその基本クラスを継承する任意のクラスからアクセス可能であることを意味します。 しかし、この継承チェーンに属さない他のクラスにはアクセスできません。

例えば、保護されたメソッドStartEngine()を持つVehicleクラスを考えてみてください。 このメソッドは、Car クラスや Truck クラスのように Vehicle を拡張する任意のクラスから呼び出すことができ、これらの派生クラスがカプセル化を維持しながら共通のロジックを活用できるようにします。

アクションでの保護の例

public class Vehicle
{
    protected void StartEngine()
    {
        // Engine start logic
    }
}
public class Car : Vehicle
{
    public void Drive()
    {
        StartEngine(); // Accessing the protected method
        // Additional driving logic
    }
}
public class Vehicle
{
    protected void StartEngine()
    {
        // Engine start logic
    }
}
public class Car : Vehicle
{
    public void Drive()
    {
        StartEngine(); // Accessing the protected method
        // Additional driving logic
    }
}
Public Class Vehicle
	Protected Sub StartEngine()
		' Engine start logic
	End Sub
End Class
Public Class Car
	Inherits Vehicle

	Public Sub Drive()
		StartEngine() ' Accessing the protected method
		' Additional driving logic
	End Sub
End Class
$vbLabelText   $csharpLabel

この例では、Vehicleという親クラスから派生したCarクラスはStartEngineメソッドにアクセスできますが、Vehicleを継承していない他のクラスはこのメソッドにアクセスできません。 これにより、protected修飾子がクラスの機能を階層的に整理し保護する方法を示します。

保護内部およびプライベート保護

C#におけるProtected Internalの理解

C#におけるprotected internalアクセス修飾子は、protectedinternalの組み合わせです。 つまり、protected internal とマークされたクラスメンバーは、同じアセンブリ内の任意のクラス(派生クラスを含む)および他のアセンブリ内の派生クラスからアクセスできます。 protected修飾子に比べて、含まれるクラスとその派生型だけに限定されないため、より広範なアクセススコープを提供します。

内部保護のユースケース

protected internalは、特定のクラスメンバーを同じアセンブリ内の他のクラスに公開したい場合に特に便利ですが、異なるアセンブリに配置されている派生クラスでもこれらのメンバーにアクセスできるようにすることもできます。 この修飾子は、大規模プロジェクトやライブラリ内で異なる部分間のメンバのアクセス権を細かく制御する必要がある場合によく使用されます。

プライベートプロテクト: アセンブリ内の制限付きアクセス

一方で、private protected 修飾子はより制限的です。private protected メンバーは、そのクラス内または同じアセンブリ内で派生クラスにおいてのみアクセス可能です。 これはprivateprotectedの組み合わせであり、メンバーへのアクセスを同じアセンブリ内に厳しく制限するために使用されます。

実用例:Protected Internal 対 Private Protected

public class BaseClass
{
    protected internal string ProtectedInternalMethod()
    {
        // Method logic
    }
    private protected string PrivateProtectedMethod()
    {
        // Method logic
    }
}
public class DerivedClass : BaseClass
{
    void AccessMethods()
    {
        ProtectedInternalMethod(); // Accessible
        PrivateProtectedMethod(); // Accessible only if DerivedClass is in the same assembly
    }
}
public class BaseClass
{
    protected internal string ProtectedInternalMethod()
    {
        // Method logic
    }
    private protected string PrivateProtectedMethod()
    {
        // Method logic
    }
}
public class DerivedClass : BaseClass
{
    void AccessMethods()
    {
        ProtectedInternalMethod(); // Accessible
        PrivateProtectedMethod(); // Accessible only if DerivedClass is in the same assembly
    }
}
Public Class BaseClass
	Protected Friend Function ProtectedInternalMethod() As String
		' Method logic
	End Function
	Private Protected Function PrivateProtectedMethod() As String
		' Method logic
	End Function
End Class
Public Class DerivedClass
	Inherits BaseClass

	Private Sub AccessMethods()
		ProtectedInternalMethod() ' Accessible
		PrivateProtectedMethod() ' Accessible only if DerivedClass is in the same assembly
	End Sub
End Class
$vbLabelText   $csharpLabel

この例では、DerivedClassProtectedInternalMethodPrivateProtectedMethod の両方にアクセスできます。 しかし、DerivedClass が異なるアセンブリにある場合、PrivateProtectedMethod にアクセスすることはできません。

IronPDF: C# PDFライブラリ

C# プロテクト (開発者にとっての動作): 図 1 - IronPDF for .NET ウェブページ

IronPDFの紹介

IronPDF の機能を探る は、C# で使用される人気のライブラリで、PDF ドキュメントの作成、編集、およびエクスポートに利用されています。 これは、クラス、オブジェクト、アクセス修飾子のようなC#の概念の実用的な応用を示す強力なツールです。 IronPDFのような複雑なライブラリを扱う際に、protected関数のようなアクセス修飾子を理解することは不可欠です。

IronPDFのハイライトは、レイアウトとスタイルを保持しながらHTMLをPDFに効率的に変換する能力です。 ウェブベースのコンテンツからレポートや請求書、ドキュメントなどのPDFを生成するのに特に便利です。 HTMLファイル、URL、およびHTML文字列をPDFファイルに変換することができます。

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

ここに、IronPDFがHTML文字列からPDFファイルを作成する例があります:

using IronPdf;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from an HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>C# Generate PDF Document using IronPDF!</h1>");
// Export to a file or Stream
pdf.SaveAs("HtmlToPdf.pdf");
using IronPdf;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from an HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>C# Generate PDF Document using IronPDF!</h1>");
// Export to a file or Stream
pdf.SaveAs("HtmlToPdf.pdf");
Imports IronPdf
' Instantiate Renderer
Private renderer = New ChromePdfRenderer()
' Create a PDF from an HTML string using C#
Private pdf = renderer.RenderHtmlAsPdf("<h1>C# Generate PDF Document using IronPDF!</h1>")
' Export to a file or Stream
pdf.SaveAs("HtmlToPdf.pdf")
$vbLabelText   $csharpLabel

こちらが出力されたPDFファイルです。

C# Protected(開発者向けの使い方):図2 - 上記のコードからの出力PDF

IronPDFにおけるProtectedの役割

IronPDFのようなライブラリでは、protected アクセス修飾子がコードの構造化において重要な役割を果たします。 これはIronPDFの開発者が他の開発者によるライブラリの操作方法を制御できるようにします。 例えば、protectedメソッドやプロパティを基底クラスで使用して、内部ロジックを公開APIにさらすことなく派生クラスでの拡張やカスタマイズを可能にする場合があります。

結論

このチュートリアルでは、オブジェクト指向プログラミングの基本的な側面であるC#のprotectedアクセス修飾子の複雑さについて探求しました。 私たちは、アクセス修飾子の基本と、クラスメンバーの範囲とアクセス可能性を定義する上での役割を理解することから始めました。 クラスメンバーのアクセス制御の分野において、それぞれが独自の目的を持つprotectedprotected internal、そしてprivate protectedの詳細を掘り下げました。

IronPDFは開発者がその機能を探索するためにIronPDFの無料試用版を提供しており、試行してその利点を実際に確認することが容易です。 継続して全機能を使用しアクセスするためには、IronPDFのライセンスオプションをご確認ください、C#でのPDF操作ニーズに対する包括的なソリューションを提供します。

チペゴ
ソフトウェアエンジニア
チペゴは優れた傾聴能力を持ち、それが顧客の問題を理解し、賢明な解決策を提供する助けとなっています。彼は情報技術の学士号を取得後、2023年にIron Softwareチームに加わりました。現在、彼はIronPDFとIronOCRの2つの製品に注力していますが、顧客をサポートする新しい方法を見つけるにつれて、他の製品に関する知識も日々成長しています。Iron Softwareでの協力的な生活を楽しんでおり、さまざまな経験を持つチームメンバーが集まり、効果的で革新的な解決策を提供することに貢献しています。チペゴがデスクを離れているときは、良い本を楽しんだり、サッカーをしていることが多いです。
< 以前
C# ケース文(開発者向けの仕組み)
次へ >
.NET Aspire(開発者向けの仕組み)