公共,私人,受保护和没有什么区别?

我一直在使用public课的大学时间,想知道publicprivateprotected之间的区别吗?

还有什么是static ,而不是什么都没有?


访问修饰符

上市

类型或成员可以被同一程序集或引用它的其他程序集中的任何其他代码访问。

私人的

类型或成员只能由同一类或结构中的代码访问。

保护

类型或成员只能由同一个类或结构中的代码或派生类中的代码访问。

内部

类型或成员可以由同一个程序集中的任何代码访问,但不能从另一个程序集访问。

内部保护

类型或成员可以被同一程序集中的任何代码或另一个程序集中的任何派生类访问。

如果设置访问修饰符,则使用默认访问修饰符。 所以即使没有设置,总是有一些访问修饰符的形式。

静态的

一个类的静态修饰符意味着该类不能被实例化,并且它的所有成员都是静态的。 一个静态成员有一个版本,无论它的封闭类型有多少实例被创建。

静态类与非静态类基本相同,但有一点不同:静态类不能从外部实例化。 换句话说,您不能使用new关键字来创建类类型的变量。 由于没有实例变量,因此可以使用类名称本身访问静态类的成员。

但是,静态构造函数就是这样的。 任何类都可以具有其中的一个类,包括静态类。 它们不能被直接调用,也不能有参数(除了类本身的任何类型参数)。 在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数以初始化该类。 看起来像这样:

static class Foo()
{
    static Foo()
    {
        Bar = "fubar";
    }

    public static string Bar { get; set; }
}

静态类通常用作服务,你可以像这样使用它们:

MyStaticClass.ServiceMethod(...);

公开 - 如果您可以看到课程,那么您可以看到该方法

私人 - 如果你是班级的一部分,那么你可以看到方法,否则不能。

受保护 - 与私人相同,所有后代也可以看到该方法。

静态(class) - 记住“Class”和“Object”之间的区别? 忘记这一切。 它们与“静态”一样......该类是它自己的唯一实例。

静态(方法) - 无论何时使用此方法,它都将有一个独立于它所属类的实际实例的引用框架。


一个图形化的概述(总而言之)

能见度

对于默认设置,如果你没有在前面加入访问修饰符,请看这里:
C#类和成员(字段,方法等)的缺省可见性?

非嵌套

enum                              public
non-nested classes / structs      internal
interfaces                        internal
delegates in namespace            internal
class/struct member(s)            private
delegates nested in class/struct  private

嵌套:

nested enum      public
nested interface public
nested class     private
nested struct    private
链接地址: http://www.djcxy.com/p/3615.html

上一篇: What is the difference between Public, Private, Protected, and Nothing?

下一篇: In WPF, what are the differences between the x:Name and Name attributes?