我知道我可以写:
protected static
在我的C#类中(在我的例子中,是一个aspx.cs)。以及:
private static
这意味着什么?静态随处可见。为什么保护/私人?
答案 0 :(得分:23)
静态的定义并非“随处可用”。它是在AppDomain范围内声明的类型之间共享的变量。
Access Modifiers不会改变此定义,但显然会影响访问范围。
您将static修饰符与访问修饰符混淆。静态变量仍然需要定义可访问性。在您的示例中,私有静态变量只能在其定义的类型中访问,受保护的类型和任何派生类型都可以访问。
请注意,请注意IIS(托管ASP.NET应用程序)会回收工作进程,这会刷新当时存活的所有静态变量值。
答案 1 :(得分:3)
静态是修饰符。.protected和private是访问修饰符。 访问修饰符指定变量的范围。 当我们希望字段或方法为单例时使用静态修饰符,因此我们不必通过创建对象来访问它们,而是可以直接通过类名调用它们
答案 2 :(得分:2)
如果将变量声明为Private,则无法在当前类之外访问它,如果声明为Protected,则只有派生类能够访问该变量。在您的示例中,private的基本含义并且保护不会改变所以无论你怎么声明静态或简单的......
class Test
{
protected static int var1;
private static int var2;
}
class MainProgram : Test
{
private static int test;
static void Main(string[] args)
{
Test.var1 = 2;
Test.var2 = 5; //ERROR :: We are not able to access var2 because it is private
}
}
在上面的代码中,您可以看到我们是否希望静态变量只能在当前类中访问,然后您需要将其设置为Private。
答案 3 :(得分:1)
一个用途是你可以创建私有静态字段,并使用公共静态方法/属性公开(以应用一些自定义业务逻辑,如单例等)
答案 4 :(得分:0)
static
并不意味着它随处可见。您仍然需要protected
/ private
来定义可见性。
答案 5 :(得分:0)
如果您只希望通过某些类访问变量,则使用protected,例如在使用多态和继承时。公共使它在范围内始终可见,私有非常明显。
答案 6 :(得分:0)
<强>私有强>
类型或成员只能由同一类或结构中的代码访问
的保护强>
类型或成员只能由同一类或结构中的代码或派生类访问。
静态修改器
在没有实例引用的情况下调用静态方法。