发布日期:2018-03-26
公有的,私有的,受保护的,什么都没有修饰符的区别是什么?+ 查看更多
公有的,私有的,受保护的,什么都没有修饰符的区别是什么?
+ 查看更多
发布日期:2018-02-23 13:50
分类:C#
浏览次数:178
我大学一直使用公有修饰符,并且我想知道公有的,私有的,受保护的修饰符的区别?
还有静态修饰符做什么相反没有静态修饰符做什么?
还有静态修饰符做什么相反没有静态修饰符做什么?
回答:
访问修饰符
如果没有设置访问修饰符,则使用默认访问修饰符。所以总是有某种形式的访问修饰符,即使它没有设置。
静态类与非静态类基本相同,但有一个区别:静态类不能外部实例化。换句话说,不能使用新关键字来创建类类型的变量。因为没有实例变量,所以您可以使用类名本身来访问static类的成员。
然而,有这样一个静态构造函数。任何类都可以有一个,包括静态类。它们不能直接调用,不能有参数(除了类本身的任何类型参数)。在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数初始化类。看起来像这样:
公有:该类型或成员可以在同一程序集中的其他代码或另一个引用它的程序集访问。
私有:类型或成员只能通过同一类或结构中的代码访问。
受保护的:类型或成员只能在同一类或结构中或在派生类中通过代码访问。
内部的:类型或成员可以在同一程序集中的任何代码访问,但不能从另一程序集访问。
内部保护:类型或成员可以在同一程序集中的任何代码或由另一程序集中的任何派生类访问。
私有:类型或成员只能通过同一类或结构中的代码访问。
受保护的:类型或成员只能在同一类或结构中或在派生类中通过代码访问。
内部的:类型或成员可以在同一程序集中的任何代码访问,但不能从另一程序集访问。
内部保护:类型或成员可以在同一程序集中的任何代码或由另一程序集中的任何派生类访问。
如果没有设置访问修饰符,则使用默认访问修饰符。所以总是有某种形式的访问修饰符,即使它没有设置。
静态
类上的静态修饰符意味着类不能被实例化,并且它的所有成员都是静态的。不管它的封闭类型创建了多少个实例,静态成员只有一个版本。静态类与非静态类基本相同,但有一个区别:静态类不能外部实例化。换句话说,不能使用新关键字来创建类类型的变量。因为没有实例变量,所以您可以使用类名本身来访问static类的成员。
然而,有这样一个静态构造函数。任何类都可以有一个,包括静态类。它们不能直接调用,不能有参数(除了类本身的任何类型参数)。在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数初始化类。看起来像这样:
static class Foo() { static Foo() { Bar = "fubar"; } public static string Bar { get; set; } }
静态类经常被用作服务,你可以像这样使用它们:
MyStaticClass.ServiceMethod(...);