.NET 帮助

C# 受保护的(开发人员如何使用)

C# 是由微软开发的现代化、面向对象且类型安全的编程语言。 C# 因其多功能性而广受认可,被用于从桌面软件到 Unity 游戏开发等各种应用。 有效的C#编程的基石之一是理解访问修饰符,它决定了类成员在类内部和外部的访问方式。

C#中的访问修饰符是用于成员声明的关键字,用于控制它们从代码的其他部分的可访问性。 最常用的访问修饰符是publicprivateprotected,每个修饰符在保护数据完整性和面向对象编程的封装原则方面都起着独特的作用。

对于初学者来说,掌握访问修饰符的概念,特别是protected在C#编程中,是很重要的。 这些修饰符不仅有助于定义类与外部世界的接口,还在继承中发挥着重要作用--继承是面向对象编程的基本概念。 了解protected的工作原理,与private protectedprotected internal等其他修饰符结合使用,是构建健壮且易于维护的C#应用程序的关键。

访问修饰符基础知识

什么是访问修饰符?

在 C# 中,访问修饰符是设置类成员(如方法、属性和变量)及类型访问级别的关键字。这些修饰符控制类的成员可以被访问的位置和方式,它们在面向对象编程中实现封装时起着关键作用。

不同访问修饰符概述

C# 提供了几种访问修饰符,每种都是为特定场景设计的:

  • 公共访问修饰符public 修饰符允许同一项目中或引用该项目的其他项目中的代码访问类成员。 这是限制最少的修饰符。
  • 私有访问修饰符:相反,private修饰符限制对类成员的访问仅限于同一个类内部。 这是最严格的修饰符,对于隐藏对象的内部状态至关重要。
  • protected 访问修饰符protected访问修饰符使类成员在其所属类及其派生类中可以访问。 这在继承场景中特别有用。
  • 内部访问修饰符:使用internal修饰符的成员在同一程序集内可以访问,但在其他程序集中无法访问。

    了解这些基本的访问修饰符为C#中的更复杂概念(例如继承和多态性)奠定了基础,在这些概念中,控制对类的访问变得至关重要。

了解受保护修改器

受保护访问修饰符在C#中的作用

C# 中的 protected 修饰符是面向对象编程中的一个基本概念。 它允许类成员在其类内以及从其派生的类中访问。 当您想在保持成员对程序其他部分隐藏的同时允许扩展功能时,这种级别的可访问性是必不可少的。

在同一类和派生类中的访问权限

受保护成员在继承中起着重要作用。 它们在声明的同一个类以及从包含类派生的其他类中可访问。 这意味着,如果您有一个包含受保护成员的基类,那么任何从该基类继承的类都可以访问这个成员。 然而,对于不属于此继承链的任何其他类来说,它仍然是不可访问的。

例如,考虑一个具有受保护方法StartEngine()Vehicle类。 此方法可以从任何继承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
$vbLabelText   $csharpLabel

在此示例中,派生自父类VehicleCar类可以访问StartEngine方法,而其他没有从Vehicle继承的类则无法访问该方法。 这演示了受保护修饰符如何在层次结构中帮助组织和保护类功能。

受保护的内部和私人保护

了解 C# 中的受保护的内部访问修饰符

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

受保护的内部使用案例

受保护的内部在您希望将某些类成员暴露给同一程序集中的其他类,但也允许在不同程序集中的派生类访问这些成员时特别有用。 这个修改器通常用于大型项目和库中,在应用程序的不同部分需要更精细地控制成员的可访问性。

私有保护:程序集内的限制访问权限

另一方面,private protected 修饰符更加严格。只有在其包含的类或位于同一程序集中的派生类中,才能访问 private protected 成员。 这是privateprotected的结合,用于严格限制同一程序集内对成员的访问。

实例:内部保护与私人保护

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
$vbLabelText   $csharpLabel

在此示例中,DerivedClass 可以访问 ProtectedInternalMethodPrivateProtectedMethod。 但是,如果 DerivedClass 位于不同的程序集,则无法访问 PrivateProtectedMethod

IronPDF: C# PDF 库

C# Protected(它如何为开发人员工作):图 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
$vbLabelText   $csharpLabel

这是IronPDF从HTML字符串创建PDF文件的示例:PDF文件从HTML字符串

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")
$vbLabelText   $csharpLabel

下面是输出的 PDF 文件:

C# Protected(它对开发者的工作原理):图2 - 上述代码的输出PDF

IronPDF中Protected的角色

在像IronPDF这样的库中,protected访问修饰符在结构代码中起着重要作用。 它允许IronPDF的开发人员控制其他开发人员如何与该库进行交互。 例如,他们可能在基类中使用受保护的方法或属性,以便在派生类中进行扩展和定制,而不向公共API公开内部逻辑。

结论

在本教程中,我们探讨了C#中受保护访问修饰符的复杂性,这是面向对象编程的基本方面。 我们首先了解了访问修饰符的基础知识及其在定义类成员范围和可访问性中的作用。 我们深入探讨了protectedprotected internalprivate protected的具体特性,它们在类成员访问控制领域中具有独特的作用。

IronPDF 为开发人员提供IronPDF 的免费试用,方便他们探索其功能,轻松进行实验并亲身体验其优势。 为了继续使用并访问所有功能,查看 IronPDF 许可选项,为您的 C# PDF 操作需求提供全面的解决方案。

Chipego
软件工程师
Chipego 拥有出色的倾听技巧,这帮助他理解客户问题并提供智能解决方案。他在 2023 年加入 Iron Software 团队,此前他获得了信息技术学士学位。IronPDF 和 IronOCR 是 Chipego 主要专注的两个产品,但他对所有产品的了解每天都在增长,因为他不断找到支持客户的新方法。他喜欢 Iron Software 的合作氛围,公司各地的团队成员贡献他们丰富的经验,以提供有效的创新解决方案。当 Chipego 离开办公桌时,你经常可以发现他在看书或踢足球。
< 前一页
C# 案例语句(开发人员如何使用)
下一步 >
.NET Aspire(针对开发者的工作原理)