大学期间我一直在使用public,想知道public, private和protected之间的区别吗?
还有,相对于什么都没有,静态有什么作用呢?
大学期间我一直在使用public,想知道public, private和protected之间的区别吗?
还有,相对于什么都没有,静态有什么作用呢?
当前回答
公共-任何人在任何地方都可以访问。 Private -只能从它所属的类中的with访问。 Protected -只能从类中的with或从类继承的任何对象访问。
除了在VB中,没有什么是像null的。 静态意味着你有那个对象的一个实例,那个类的每个实例都有方法。
其他回答
重新发布这个答案的精彩图表。
以下是维恩图中的所有访问修饰语,从更有限制的到更混杂的: 私人: private protected: c# 7.2新增 内部: 保护: 保护内部: 公众:
类型或成员可以被同一程序集中的任何其他代码或引用它的另一个程序集中的任何其他代码访问。类型的公共成员的可访问性级别由类型本身的可访问性级别控制。
该类型或成员只能被相同类或结构中的代码访问。
内部类型或成员只能在同一程序集中的文件中访问。
protected类型或成员只能被同一类中的代码或从该类派生的类中的代码访问。 internal:类型或成员可以被同一程序集中的任何代码访问,但不能从另一个程序集中访问。换句话说,内部类型或成员可以从属于同一编译的代码中访问。 protected internal:类型或成员可以由声明它的程序集中的任何代码访问,也可以从另一个程序集中的派生类中访问。
类型或成员可以由在其包含程序集中声明的类派生的类型访问。
受保护的内部成员可从当前程序集或从包含类派生的类型访问。
静态修饰符用于声明静态成员,该成员属于类型本身,而不属于特定对象。静态修饰符可用于声明静态类。在类、接口和结构中,可以向字段、方法、属性、操作符、事件和构造函数添加静态修饰符。
在c# 11中,您还可以使用文件访问修饰符。
文件修饰符将顶级类型的作用域和可见性限制在声明顶级类型的文件中。文件修饰符通常应用于源生成器编写的类型。文件-本地类型为源生成器提供了一种方便的方法来避免所生成类型之间的名称冲突。
// In File1.cs:
file interface IWidget
{
int ProvideAnswer();
}
file class HiddenWidget
{
public int Work() => 42;
}
public class Widget : IWidget
{
public int ProvideAnswer()
{
var worker = new HiddenWidget();
return worker.Work();
}
}
小心!注意类的可访问性。默认情况下,所有人都可以访问公共和受保护的类和方法。
此外,微软在显示访问修饰符(公共的,受保护的,等等。关键字)当Visual Studio中创建新类时。因此,请仔细考虑类的可访问性,因为它是通往实现内部的大门。
Private状态表示变量只能被同一类的对象访问。受保护状态将这种访问权限扩展到该类的后代。
“从上表中我们可以看到隐私和受保护之间的区别……我认为两者是一样的....那么这两个单独的命令有什么用呢?
查看MSDN链接了解更多信息
我创建了另一种类型的可视化。也许这是更好的理解方式
https://github.com/TropinAlexey/C-sharp-Access-Modifiers