我可以用protected / private静态变量做什么?

时间:2012-05-23 08:33:29

标签: c# .net

我知道我可以写:

protected static

在我的C#类中(在我的例子中,是一个aspx.cs)。以及:

private static

这意味着什么?静态随处可见。为什么保护/私人?

7 个答案:

答案 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)

<强>私有
    类型或成员只能由同一类或结构中的代码访问 的保护
    类型或成员只能由同一类或结构中的代码或派生类访问。 静态修改器
 在没有实例引用的情况下调用静态方法。