我看我可以这样写:如何使用受保护的/私有静态变量?
protected static
在我的C#类
(在我的情况下,aspx.cs)。以及:
private static
这是什么意思?静态是无处不在的。为什么保护/私人?
我看我可以这样写:如何使用受保护的/私有静态变量?
protected static
在我的C#类
(在我的情况下,aspx.cs)。以及:
private static
这是什么意思?静态是无处不在的。为什么保护/私人?
静态的定义并不是“无处不在”。它是一个在AppDomain范围内声明的类型共享的变量。
Access Modifiers不改变这个定义,但明显影响访问范围。
您在将static修饰符与访问修饰符相混淆。静态变量仍然需要定义可访问性。在你的例子中,私有静态变量只能在它定义的类型中访问,protected可以在类型和任何派生类型中访问。
请注意,IIS(托管ASP.NET应用程序)会回收工作进程,这将会刷新当时处于活动状态的任何静态变量值。
static
并不意味着它无处不在。您仍然需要protected
/private
来定义可视性。
的用途之一是,你可以创建私有静态字段,并使用公共静态方法公开/属性(适用像单身一些自定义的业务逻辑等)
使用受保护的,如果你只希望变量进行访问通过某些类,例如使用多态和继承。公开使其始终在范围内可见,而私人显而易见。
如果你声明一个变量为Private,那么你无法在当前类之外访问它,如果声明为Protected,那么只有派生类可以访问该变量。在你的例子中,基本含义是private和protected没有改变,因此不要紧,你怎么把它声明静态或简单的一个...
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
}
}
在上面的代码中,你可以看到,如果我们想要的静态变量只在当前类是可访问的,那么你需要把它作为一个私人。
来源:MSDN(各种页面)。始终保持礼貌来信任你的来源。 – tomfanning
private
类型或成员只能由同一个类或结构中的代码访问。
保护
类型或成员只能由相同的类或结构,或派生类中的代码访问。 Static Modifier
静态方法在没有实例引用的情况下被调用。
静态方法?我在谈论变量,而不是方法...... – markzzz
@markzzz无关紧要,你如何访问他们是一样的 - 一个只是一个方法调用,另一个是字段/属性访问。 –
http://stackoverflow.com/questions/135020/advantages-to-using-private-static-methods – CraigTP
我知道!对不起,我来自Java。那里的东西有点不同... – markzzz