.NET ヘルプ

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

更新済み 1月 4, 2024
共有:

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

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

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

アクセス修飾子の基本

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

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

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

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

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

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

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

C#におけるprotectedアクセス修飾子の役割

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

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

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

例えば、Vehicle クラスに保護されたメソッド StartEngine があるとします。(). このメソッドは、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
VB   C#

この例では、親クラスである 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
VB   C#

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

IronPDF: C# PDFライブラリ

C# 保護 (開発者向けの仕組み):図1 - IronPDF for .NETウェブページ

IronPDFの紹介

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

以下は、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")
VB   C#

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

C# 保護(開発者にとってのしくみ):図2 - 上記コードからの出力PDF

IronPDFにおけるProtectedの役割

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

結論

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

IronPDFは 無料試用 開発者がその機能を探求し、実験し、そのメリットを実際に見ることができるようにします。 継続してすべての機能を利用するためには、 ライセンス $749 から始めて、C#でのPDF操作ニーズに対応する包括的なソリューションを提供します。

< 以前
C# ケース文(開発者向けの仕組み)
次へ >
.NET Aspire(開発者向けの仕組み)

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

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