在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
C# 是一種現代的、物件導向的、類型安全的程式語言,由微軟開發。 廣為人知以其多功能性,C# 用於各種應用程式,從桌面軟體到使用 Unity 的遊戲開發。 有效的 C# 程式設計的基石之一是理解存取修飾符,它決定了類成員在類內和類外的存取方式。
C# 中的存取修飾符是用於成員宣告中的關鍵字,用來控制它們在程式碼其他部分的可存取性。 最常用的存取修飾符是 public
、private
和 protected
,每一個都在保障數據完整性和面向物件編程的封裝原則中扮演著獨特的角色。
對於初學者來說,掌握存取修飾詞的概念,尤其是在 C# 程式設計中,protected
,很重要。 這些修飾符不僅有助於定義類的對外介面,還在繼承中起著重要作用——這是物件導向程式設計中的一個基本概念。 了解 protected
如何與 private protected
和 protected internal
等其他修飾符協同工作,是構建穩健且可維護的 C# 應用程序的關鍵。
在 C# 中,存取修飾符是設置類別成員可存取級別的關鍵字。(如方法、屬性和變數)這些修飾符控制著類成員的存取位置和方式,在實現面向對象編程中的封裝時起著關鍵作用。
C# 提供了幾種訪問修飾符,每種都是針對特定情況設計的:
public
修飾詞允許從同一專案中的其他程式碼或引用該專案的其他專案存取類別成員。 這是限制最少的修飾符。private
修飾符僅限於在相同類別內訪問類別成員。 它是最具限制性的修飾符,對於隱藏物件的內部狀態至關重要。protected
訪問修飾符使類成員在其類及任何派生類中可訪問。 這在繼承情境中特別有用。Internal 存取修飾符:具有 internal
修飾符的成員可以在相同的程序集內存取,但無法從其他程序集存取。
了解這些基本的存取修飾符為更複雜的C#概念奠定了基礎,例如繼承和多型,在這些概念中,控制類別的存取變得至關重要。
C# 中的 protected
修飾符是物件導向程式設計中的基本概念。 這允許一個類別成員在其類別內以及衍生自該類別的其他類別中被訪問。 當您想要在允許擴展功能的同時保持成員對程序其他部分隱藏時,這種級別的可訪問性是必不可少的。
受保護的成員在繼承中扮演著重要角色。 它們可以在宣告它們的相同類別中存取,也可以在從包含類別衍生的其他類別中存取。 這意味著,如果您有一個具有受保護成員的基類,任何繼承自這個基類的類都可以存取這個成員。 然而,它對於不屬於此繼承鏈的任何其他類別仍然是不可訪問的。
例如,考慮一個具有受保護方法 StartEngine
的 Vehicle
類別(). 此方法可以從任何繼承
Vehicle的類別內部呼叫,例如
Car或
Truck` 類別,這使這些衍生類別在保持封裝的同時能夠利用共同的邏輯。
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
在此範例中,從父類別 Vehicle
派生而來的 Car
類別可以存取 StartEngine
方法,而其他未繼承 Vehicle
的類別則無法存取此方法。 這展示了protected修飾符如何幫助分層組織和保護類功能。
C# 的 protected internal
存取修飾符是 protected
和 internal
的組合。 這意味著標記為 protected internal
的類別成員可以從相同組件中的任何類別(包括衍生類別)以及其他組件中的衍生類別中訪問。 它相比 protected
修飾符提供了更廣泛的訪問範圍,因為它不限於僅包含的類及其派生類型。
受保護的內部特別有用,當您想將某些類成員暴露給同一個程序集中的其他類時,同時也允許在不同程序集中的派生類訪問這些成員。 此修飾符通常用於大型專案和庫中,需要對應用程式不同部分的成員可訪問性進行更精細的控制。
另一方面,private protected
修飾符更具限制性。只有在其包含的類或位於相同程序集的派生類中,才能訪問 private protected
成員。 這是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
在此範例中,DerivedClass 可以存取 ProtectedInternalMethod 和 PrivateProtectedMethod。 然而,如果 DerivedClass 在不同的程式集內,則無法存取 PrivateProtectedMethod。
探索 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
這是 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")
這是輸出 PDF 檔案:
在像 IronPDF 這樣的庫中,protected 存取修飾符在構建程式碼結構中扮演著重要的角色。 它允許IronPDF的開發人員控制其他開發人員如何與該庫互動。 例如,他們可能會在基類中使用保護的方法或屬性,以允許在衍生類中擴展和自訂,而不公開內部邏輯給公共 API。
在本教程中,我們探討了 C# 中 protected 存取修飾符的複雜性,這是物件導向程式設計的基本方面。 我們首先從了解訪問修飾符的基本概念以及它們在定義類別成員範圍和可訪問性中的作用開始。 我們深入探討了 protected、protected internal 和 private protected 的特性,它們在類成員訪問控制領域各有其獨特的用途。
IronPDF 提供一個IronPDF 免費試用供開發人員探索其功能,使其易於嘗試並實際體驗其優勢。 為了持續使用並訪問所有功能,查看IronPDF授權選項,提供全面的解決方案以滿足您在 C# 中對 PDF 操作的需求。