我所有的大学四年我一直在使用public
,并想知道的区别public
,private
和protected
?
还有什么static
而不是什么都不做呢?
该类型或成员可以由同一程序集或引用它的另一个程序集中的任何其他代码访问。
类型或成员只能由相同类或结构中的代码访问。
类型或成员只能由相同类或结构或派生类中的代码访问。
private protected
(在C#7.2中添加)该类型或成员只能由相同类或结构中的代码访问,或者只能由同一程序集中的派生类访问,而不能从另一个程序集中访问。
可以通过同一程序集中的任何代码访问类型或成员,但不能从另一个程序集中访问该类型或成员。
可以通过同一程序集中的任何代码或另一个程序集中的任何派生类访问类型或成员。
如果未设置访问修饰符,则使用默认访问修饰符。因此,即使未设置访问修饰符,总会有某种形式。
static
修饰符类上的static修饰符意味着该类无法实例化,并且其所有成员都是静态的。静态成员具有一个版本,无论创建多少个其封闭类型的实例。
静态类与非静态类基本相同,但是有一个区别:静态类不能在外部实例化。换句话说,你不能使用new关键字来创建类类型的变量。因为没有实例变量,所以你可以使用类名本身来访问静态类的成员。
但是,有一个诸如静态构造函数之类的东西。任何类都可以具有其中之一,包括静态类。它们不能直接调用,也不能具有参数(类本身上的任何类型参数除外)。在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数来初始化类。看起来像这样:
static class Foo()
{
static Foo()
{
Bar = "fubar";
}
public static string Bar { get; set; }
}
静态类通常用作服务,你可以像这样使用它们:
MyStaticClass.ServiceMethod(...);
您可以在非静态类中使用静态方法,对吗?
是的,它们的行为与我的示例相同。
在这种情况下,“装配”一词是什么意思?
静态的-也可以将其视为全局变量。示例:Console.WriteLine()...控制台及其所有方法都是静态类。因此,通过使用这种形式-Console.WriteLine()中的[static class]。[static method](),可以轻松地在代码中的任何位置使用它们。
受保护的和私有受保护的有什么区别?对我来说,听起来都是一样的..