我们知道如果一个类是静态的,那么类中的所有成员都必须是静态的;静态类中不能有任何实例成员。如果我们尝试这样做,就会出现编译时错误。
但是如果在静态方法中有一个实例成员,我就不会遇到编译时错误。
public static class MyStaticClass
{
// cannot do this
//int i;
// can do this though.
static void MyStaticMethod()
{
int j;
}
}
答案 0 :(得分:2)
它不是实例成员,它的(j
)是静态方法中的局部变量。
考虑遵循非静态类。
public class MyStaticClass
{
int i; //instance member
static void MyStaticMethod()
{
i = 0; // you can't access that
}
}
上面的类有一个实例成员i
,你不能在静态方法中访问它。
答案 1 :(得分:2)
static void MyStaticMethod()
{
int j;
}
静态方法中有一个局部变量(j)
。
来自MSDN的信息:
如果要保证它,可以将类定义为静态 无法实例化,无法派生或作为基础 另一种类型,只能包含静态成员。
在访问静态成员之前初始化静态成员 第一次和静态构造函数之前,如果有一个, 被称为。
答案 2 :(得分:2)
静态方法和属性无法访问其包含类型中的非静态字段和事件,并且除非在方法参数中显式传递,否则它们无法访问任何对象的实例变量。
public class MyStaticClass
{
static int j; //static member
int i;//instance member
static void MyStaticMethod()
{
i = 0; // you can't access that
j = 0; // you can access
}
}