使用样式修改类
介绍
访问修饰符提供了一种控制对类及其成员的访问的方法。它们还用于控制对特定类型的访问。这种级别的控制带来了内置安全性,提高了应用程序的稳健性。它可以防止在代码中意外创建错误。这将是一份详尽的指南,让您了解这一概念背后的原因。
访问修饰符
可访问性级别基本上分为六个:
- 民众
- 受保护
- 内部的
- 私人的
- 受保护的内部
- 私人保护
一个成员或类型只允许一个访问修饰符,除非使用protected internal或private protected。
您不能将访问修饰符分配给命名空间,因为它们不具备访问限制。顶级类型只能具有internal或public可访问性,如果没有另行指定,这些类型的默认值为internal 。
访问修饰符是面向对象编程的三大支柱之一。这个支柱称为封装。另外两个支柱是继承和多态。
封装是关于信息隐藏,或者更准确地说,为获得授权的人提供对特定信息的适当访问权限。
作为最佳实践,开发人员通常将字段定义为私有访问级别,并将getter和setter方法设置为公共。这样,只能对字段进行受控的修改。
以下是一个例子:
public class Developer
{
private string Name;
private int Salary;
public Developer(string name, int salary)
{
this.Name = name;
this.Salary = salary;
}
public void SetName(string name)
{
if (!String.IsNullOrEmpty(name))
{ this.Name = name; }
}
public string GetName()
{ return Name; }
public void SetSalary(int amount)
{
if (amount.GetType() == typeof(int))
{ this.Salary = amount; }
}
public int GetSalary()
{ return Salary; }
}
如果我们想初始化我们的对象,我们应该执行以下操作。
Developer Daniel = new Developer("Szabó Dániel Ernő",100000);
现在我们可以使用GetName来查看该属性。
Console.WriteLine(Daniel.GetName());
另外,我们可以使用SetSalary来改变属性。
Daniel.SetSalary(2000000);
Console.WriteLine(Daniel.GetSalary());
请注意,以下操作将会引发错误。
Daniel.Salary = 300000;
这是因为该属性是私有的,修改它的唯一方法是调用名为SetSalary的适当的setter!
C# 还区分了其他类型的修饰符,这些修饰符不仅与类绑定,还与不同的数据类型和结构绑定。
- 抽象的
- 异步
- 常量
- 静止的
- 密封...
如需完整参考,您应该访问此文档,因为本指南不会展示完整的内容。
内部的
此访问修饰符确保该对象只能在其自己的程序集内访问,而不能从其他程序集访问。
这意味着像这样的类:
public class InternalDemo
{
internal int number = 99;
}
上述代码允许从同一程序/程序集访问数字属性。从另一个程序中使用它将会抛出一个错误,提示“它无法访问该属性”。
私人的
这些属性只能在类内部访问,无法从其他类或类外部访问。
class Developer
{
private string Name = "Daniel";
}
class Program
{
static void Main(string[] args)
{
Developer D = new Developer();
Console.WriteLine(D.Name);
}
}
WriteLine函数将抛出异常,通知我们访问修饰符所造成的限制。
民众
此访问修饰符使我们正在处理的整个项目都可以访问该属性/方法。这是最宽松的修饰符,应谨慎使用。
class Player
{
public string Game = "Rocket League";
}
class Program
{
static void Main(string[] args)
{
Player R = new Player();
Console.WriteLine(D.Game);
}
}
受保护
此修饰符允许从类内部以及从该类派生的每个类访问该方法或属性。
class Developer
{
protected string Name = "Daniel";
}
class GameDeveloper : Developer
{
void Print()
{
Console.WriteLine(Name);
}
}
WriteLine函数可以毫无问题地访问按照用法或受保护的访问修饰符所投射的属性。
受保护的内部
这是protected和internal修饰符的组合。这意味着我们只能从同一程序集内或其他程序集或项目中的派生类访问该成员。
私人保护
此修饰符也是一个组合修饰符。它的魔力部分来自 private ,另一部分来自protected关键字。这允许我们访问容器类或从容器类派生的类中的成员,但这仅限于给定的程序集/项目。
密封
将此应用于类时,可以防止其他类从该类继承。这也可以应用于覆盖基类中的虚拟方法或属性的方法或属性。这意味着其他类可以从您的类派生,但不能覆盖方法或属性。
结论
总而言之,访问修饰符是 C# 编程语言的核心。每个较大的应用程序都会考虑这些安全限制,并且该功能允许在整个运行期间对访问进行微调。开发人员要么喜欢它,要么讨厌它;没有中间立场。我记得当我开始学习 C# 时,解决这些访问修饰符带来的问题让我感到很不爽。但随着时间的推移,如果您有意识地记住这个功能,您就会习惯它。我希望这对您来说是值得的。
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~