.NET 幫助

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

發佈 2024年1月4日
分享:

C# 是一種現代的、物件導向的、類型安全的程式語言,由微軟開發。 廣為人知以其多功能性,C# 用於各種應用程式,從桌面軟體到使用 Unity 的遊戲開發。 有效的 C# 程式設計的基石之一是理解存取修飾符,它決定了類成員在類內和類外的存取方式。

C# 中的存取修飾符是用於成員宣告中的關鍵字,用來控制它們在程式碼其他部分的可存取性。 最常用的存取修飾符是 publicprivateprotected,每一個都在保障數據完整性和面向物件編程的封裝原則中扮演著獨特的角色。

對於初學者來說,掌握存取修飾詞的概念,尤其是在 C# 程式設計中,protected,很重要。 這些修飾符不僅有助於定義類的對外介面,還在繼承中起著重要作用——這是物件導向程式設計中的一個基本概念。 了解 protected 如何與 private protectedprotected internal 等其他修飾符協同工作,是構建穩健且可維護的 C# 應用程序的關鍵。

存取修飾符的基本知識

什麼是存取修飾符?

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

不同存取修飾子的概覽

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

  • 公共存取修飾詞public 修飾詞允許從同一專案中的其他程式碼或引用該專案的其他專案存取類別成員。 這是限制最少的修飾符。
  • 私有訪問修飾符:相反,private 修飾符僅限於在相同類別內訪問類別成員。 它是最具限制性的修飾符,對於隱藏物件的內部狀態至關重要。
  • 受保護的訪問修飾符protected 訪問修飾符使類成員在其類及任何派生類中可訪問。 這在繼承情境中特別有用。
  • Internal 存取修飾符:具有 internal 修飾符的成員可以在相同的程序集內存取,但無法從其他程序集存取。

    了解這些基本的存取修飾符為更複雜的C#概念奠定了基礎,例如繼承和多型,在這些概念中,控制類別的存取變得至關重要。

了解受保護的修飾符

受保護訪問控制修飾符在C#中的角色

C# 中的 protected 修飾符是物件導向程式設計中的基本概念。 這允許一個類別成員在其類別內以及衍生自該類別的其他類別中被訪問。 當您想要在允許擴展功能的同時保持成員對程序其他部分隱藏時,這種級別的可訪問性是必不可少的。

同類與衍生類別內的可及性

受保護的成員在繼承中扮演著重要角色。 它們可以在宣告它們的相同類別中存取,也可以在從包含類別衍生的其他類別中存取。 這意味著,如果您有一個具有受保護成員的基類,任何繼承自這個基類的類都可以存取這個成員。 然而,它對於不屬於此繼承鏈的任何其他類別仍然是不可訪問的。

例如,考慮一個具有受保護方法 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 的類別則無法存取此方法。 這展示了protected修飾符如何幫助分層組織和保護類功能。

受保內部及私有受保

理解 C# 中的受保护内部

C# 的 protected internal 存取修飾符是 protectedinternal 的組合。 這意味著標記為 protected internal 的類別成員可以從相同組件中的任何類別(包括衍生類別)以及其他組件中的衍生類別中訪問。 它相比 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的開發人員控制其他開發人員如何與該庫互動。 例如,他們可能會在基類中使用保護的方法或屬性,以允許在衍生類中擴展和自訂,而不公開內部邏輯給公共 API。

結論

在本教程中,我們探討了 C# 中 protected 存取修飾符的複雜性,這是物件導向程式設計的基本方面。 我們首先從了解訪問修飾符的基本概念以及它們在定義類別成員範圍和可訪問性中的作用開始。 我們深入探討了 protectedprotected internalprivate protected 的特性,它們在類成員訪問控制領域各有其獨特的用途。

IronPDF 提供一個IronPDF 免費試用供開發人員探索其功能,使其易於嘗試並實際體驗其優勢。 為了持續使用並訪問所有功能,查看IronPDF授權選項,提供全面的解決方案以滿足您在 C# 中對 PDF 操作的需求。

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

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

免費 NuGet 下載 總下載次數: 11,622,374 查看許可證 >