在生產環境中測試,無水印。
在任何需要的地方都能運行。
獲得 30 天的全功能產品。
在幾分鐘內上手運行。
試用產品期間完全訪問我們的支援工程團隊
C# 是一種現代的、物件導向的、類型安全的程式語言,由微軟開發。 廣為人知以其多功能性,C# 用於各種應用程式,從桌面軟體到使用 Unity 的遊戲開發。 有效的 C# 程式設計的基石之一是理解存取修飾符,它決定了類成員在類內和類外的存取方式。
C# 中的存取修飾符是用於成員宣告中的關鍵字,用來控制它們在程式碼其他部分的可存取性。 最常用的存取修飾符是public
、private
和protected
,每一個都在保障資料完整性和實作物件導向程式設計中的封裝原則方面具有獨特的作用。
對於初學者來說,掌握存取修飾符的概念,特別是protected
在 C# 編程中,很重要。 這些修飾符不僅有助於定義類的對外介面,還在繼承中起著重要作用——這是物件導向程式設計中的一個基本概念。 理解 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 操作的需求。