.NET 幫助

C# 保護 (開發人員如何使用)

發佈 2024年1月4日
分享:

C# 是由微軟開發的現代化、面向對象且類型安全的程式語言。因其多用途性廣受認可,C# 被應用於從桌面軟體到使用 Unity 的遊戲開發等各種應用中。有效的 C# 編程的一個基石是理解存取修飾詞,它們決定了如何在類內部和外部存取類成員。

C# 中的存取修飾詞是用於成員聲明中的關鍵字,用來控制它們從代碼的其他部分存取的可見性。最常用的存取修飾詞是 publicprivateprotected,每個都在保障數據完整性和面向對象編程的封裝原則方面起著獨特的作用。

對初學者來說,掌握存取修飾詞的概念,特別是 在 C# 程式設計中,protected,這是重要的。這些修飾符不僅有助於定義類與外部世界的接口,而且在繼承中也起著重要作用——這是面向對象編程的一個基本概念。理解protected的工作原理,與其他修飾符如private protectedprotected internal協同工作,是構建健壯且可維護的C#應用程序的關鍵。

存取修飾符的基本知識

什麼是存取修飾符?

C# 中的存取修飾符是設置類成員可訪問級別的關鍵字。 (如方法、屬性和變數) 這些修飾符控制著類成員的存取位置和方式,在實現面向對象編程中的封裝時起著關鍵作用。

不同訪問修飾符概述

C# 提供了幾種訪問修飾符,每種修飾符都針對特定的情況設計:

  • 公有訪問修飾符public 修飾符允許在同一專案中或參考該專案的任何其他代碼中訪問類成員。這是最不限制的修飾符。
  • 私有訪問修飾符:相反,private 修飾符僅允許在同一類中訪問類成員。這是最限制的修飾符,對於隱藏對象的內部狀態至關重要。
  • 保護訪問修飾符protected 訪問修飾符允許在其類及任何衍生類中訪問類成員。這在繼承情況中特別有用。
  • 內部訪問修飾符:帶有 internal 修飾符的成員在同一程序集內可訪問,但其他程序集不可訪問。

了解這些基本訪問修飾符是掌握 C# 中複雜概念的基礎,比如繼承和多態,這些概念在控制類的訪問權限時變得至關重要。

了解受保護的修飾符

在C#中Protected訪問修飾符的作用

protected修飾符在C#中的物件導向程式設計中是一個基本概念。它允許一個類別的成員在其本身的類別內以及從它衍生出的類別中被訪問。這種訪問級別在您想要允許擴展功能的同時,將這些成員對程式的其他部分隱藏時,顯得尤為重要。

同類別與派生類別內的可存取性

受保護成員在繼承中扮演著重要角色。它們在聲明它們的同一類別以及從包含類別派生的其他類別中可存取。這表示如果您有一個具有受保護成員的基類,任何繼承自這個基類的類別都可以存取該成員。然而,對於任何未包含在此繼承鏈中的其他類別而言,這個成員都是無法存取的。

例如,考慮一個具有受保護方法StartEngineVehicle類別。()此方法可以在任何擴展 Vehicle 的類中調用,例如 CarTruck 類,允許這些派生類利用通用邏輯,同時保持封裝性。

行動中的保護範例

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的類別則無法存取此方法。這展示了如何使用受保護修飾符來分層組織和保護類別功能。

受保內部及私有受保

理解 C# 中的 Protected Internal

在 C# 中,protected internal 存取修饰符是 protectedinternal 的组合。这意味着被标记为 protected internal 的类成员可以从同一程序集的所有类(包括派生类)以及其他程序集中的派生类访问。与 protected 修饰符相比,它提供了更广泛的访问范围,因为它不仅限于包含类及其派生类型。

Protected Internal 的使用案例

Protected internal 特別適用於當您希望將某些類成員暴露給同一個程序集內的其他類,但同時允許這些成員在位於不同程序集的派生類中進行訪問。此修飾符常用於大型項目和庫中,當您需要更精細地控制應用程式不同部分之間的成員可訪性時。

Private Protected: 在程序集內限制存取

另一方面,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#

在此範例中,DerivedClass 可以存取 ProtectedInternalMethodPrivateProtectedMethod。然而,如果 DerivedClass 位於不同的組件中,則無法存取 PrivateProtectedMethod

IronPDF:C# PDF 庫

C# 保護(對開發者的運作方式):圖 1 - IronPDF for .NET 網頁

IronPDF 簡介

IronPDF 是一個在 C# 中廣受歡迎的庫,用於創建、編輯和導出 PDF 文件。這是一個強大的工具,展示了 C# 概念如類、對象和訪問修飾符的實際應用。了解訪問修飾符如 protected 功能在使用諸如 IronPDF 這樣的複雜庫時至關重要。

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
VB   C#

這是 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# Protected(對開發者的工作方式):圖2 - 來自上述代碼的輸出PDF

IronPDF 中的 Protected 角色

在像 IronPDF 這樣的庫中,protected 存取修飾符在結構化代碼中扮演著重要角色。它允許 IronPDF 的開發人員控制其他開發人員如何與該庫互動。例如,他們可能在基類中使用 protected 方法或屬性,以允許在衍生類中進行擴展和自定義,而不將內部邏輯暴露給公共 API。

結論

在本教程中,我們探討了 C# 中 protected 存取修飾詞的細節,這是物件導向程式設計的一個基本方面。我們首先了解了存取修飾詞的基本概念及其在定義類成員範圍和可存取性的作用。我們深入探討了 protectedprotected internalprivate protected 的具體情況,它們在類成員存取控制領域中各自具有獨特的用途。

IronPDF 提供了 免費試用 讓開發人員探索其功能,使其易於實驗並實際看到其好處。要持續使用並訪問所有功能, 授權 從 $749 開始,為您在 C# 中提供全面的 PDF 操作解決方案。

< 上一頁
C# 案例陳述句(如何為開發人員運作)
下一個 >
.NET Aspire(它如何為開發者工作)

準備開始了嗎? 版本: 2024.10 剛剛發布

免費 NuGet 下載 總下載次數: 10,993,239 查看許可證 >