在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
C# 是由微软开发的现代化、面向对象且类型安全的编程语言。 C# 因其多功能性而广受认可,被用于从桌面软件到 Unity 游戏开发等各种应用。 有效的C#编程的基石之一是理解访问修饰符,它决定了类成员在类内部和外部的访问方式。
C#中的访问修饰符是用于成员声明的关键字,用于控制它们从代码的其他部分的可访问性。 最常用的访问修饰符是 public
、private
和 protected
,它们各自承担着在面向对象编程中保护数据完整性和封装原则的独特作用。
对于初学者来说,掌握访问修饰符的概念,尤其是C# 编程中的 "保护重要。 这些修饰符不仅有助于定义类与外部世界的接口,还在继承中发挥着重要作用--继承是面向对象编程的基本概念。 了解如何使用 protected
,以及其他修饰符如 private protected
和 protected internal
,对于构建健壮且可维护的 C# 应用程序至关重要。
在 C# 中,访问修饰符是设置类成员访问级别的关键字。(如方法、属性和变量)和类型。这些修饰符控制着类成员的访问位置和方式,在面向对象编程中的封装实现中起着至关重要的作用。
C# 提供了几种访问修饰符,每种都是为特定场景设计的:
public
修饰符允许从同一项目中的任何其他代码或引用它的其他项目中访问类成员。 这是限制最少的修饰符。private
修饰符将访问限制在同一个类内的类成员。 这是最严格的修饰符,对于隐藏对象的内部状态至关重要。protected
访问修饰符使类成员可以在其类内及任何派生类中访问。 这在继承场景中特别有用。内部访问修饰符:带有 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
的类则无法访问此方法。 这演示了受保护修饰符如何在层次结构中帮助组织和保护类功能。
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的开发人员控制其他开发人员如何与该库进行交互。 例如,他们可能会在基类中使用protected方法或属性,以允许在派生类中进行扩展和自定义,而不会将内部逻辑暴露给公共API。
在本教程中,我们探讨了C#中protected访问修饰符的复杂性,这是面向对象编程的基本方面。 我们首先了解了访问修饰符的基础知识及其在定义类成员范围和可访问性中的作用。 我们深入探讨了protected、protected internal 和 private protected 的具体特性,每个都在类成员访问控制领域中具有独特的作用。
IronPDF 提供一个免费试用 IronPDF供开发人员探索其功能,方便进行试验并亲眼见证其好处。 要继续使用并访问所有功能,查看 IronPDF 许可选项在此基础上,我们将为您提供一个全面的解决方案,满足您在 C# 中操作 PDF 的需求。