在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
C# 是微软公司开发的一种现代化、面向对象和类型安全的编程语言。C# 的通用性得到广泛认可,被用于从桌面软件到 Unity 游戏开发等各种应用中。有效 C# 编程的基石之一是理解访问修饰符,它规定了类内外访问类成员的方式。
C# 中的访问修饰符是成员声明中使用的关键字,用于控制从代码其他部分对成员的访问。最常用的访问修饰符是 "public"、"private "和 "protected",它们在保护面向对象编程的数据完整性和封装原则方面各司其职。
对于初学者来说,掌握访问修饰符的概念,尤其是 C# 编程中的 "保护是很重要的。这些修饰符不仅有助于定义类与外部世界的接口,还在继承中发挥着重要作用--继承是面向对象编程的基本概念。了解 "protected "如何与其他修饰符(如 "private protected "和 "protected internal")协同工作,是构建健壮且可维护的 C# 应用程序的关键。
C# 中的访问修饰符是设置类成员可访问级别的关键字 (如方法、属性和变量) 和类型。这些修饰符控制着类成员的访问位置和方式,在面向对象编程中的封装实现中起着至关重要的作用。
C# 提供了多种访问修饰符,每种修饰符都是针对特定情况设计的:
了解了这些基本的访问修饰符,就为 C# 中更复杂的概念(如继承和多态性)奠定了基础,在这些概念中,控制对类的访问变得至关重要。
C# 中的 "保护 "修饰符是面向对象编程中的一个基本概念。它允许类成员在其类内以及派生类中被访问。当您想允许扩展功能,同时又想使该成员不被程序的其他部分访问时,这种可访问性是必不可少的。
受保护成员在继承中起着重要作用。在声明保护成员的同一类中,以及从包含保护成员的类派生出来的其他类中,都可以访问它们。这意味着,如果一个基类有一个受保护的成员,那么从该基类继承的任何类都可以访问该成员。但是,不属于该继承链的任何其他类都无法访问该成员。
例如,一个 Vehicle
类有一个受保护的方法 StartEngine()
.该方法可在任何扩展了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 "内部访问修饰符是 "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 internal和private protected的特殊性,它们在类成员访问控制领域都有独特的作用。
IronPDF 提供了 免费试用 为开发人员提供了探索其功能的机会,使他们可以轻松地进行实验并在实际操作中体验其优势。如需继续使用和访问所有功能,请访问 许可证 从 $749 开始,为您的 C# PDF 操作需求提供全面的解决方案。