C# 为什么静态类中不能有实例成员,而静态方法中可以有实例成员?
我们知道,如果一个类是静态的,那么该类中的所有成员都必须是静态的;静态类中不能有任何实例成员。如果我们尝试这样做,我们会得到一个编译时错误C# 为什么静态类中不能有实例成员,而静态方法中可以有实例成员?,c#,.net,oop,C#,.net,Oop,我们知道,如果一个类是静态的,那么该类中的所有成员都必须是静态的;静态类中不能有任何实例成员。如果我们尝试这样做,我们会得到一个编译时错误 public static class MyStaticClass { // cannot do this //int i; // can do this though. static void MyStaticMethod() { in
public static class MyStaticClass
{
// cannot do this
//int i;
// can do this though.
static void MyStaticMethod()
{
int j;
}
}
但如果在静态方法中有一个实例成员,则不会出现编译时错误
public static class MyStaticClass
{
// cannot do this
//int i;
// can do this though.
static void MyStaticMethod()
{
int j;
}
}
它不是实例成员,它的(
j
)是静态方法中的局部变量
static void MyStaticMethod()
{
int j;
}
考虑以下非静态类
public class MyStaticClass
{
int i; //instance member
static void MyStaticMethod()
{
i = 0; // you can't access that
}
}
上面的类有一个实例成员i
,您不能在静态方法中访问它
static void MyStaticMethod()
{
int j;
}
在静态方法中有一个局部变量(j)
有关您的信息,请访问:
如果要保证类是静态的,可以将其定义为静态的
无法实例化,无法派生或用作的基础
另一个类型,并且只能包含静态成员
静态成员在访问静态成员之前初始化
第一次在静态构造函数之前,如果有,
被称为
静态方法和属性不能访问其包含类型中的非静态字段和事件,并且不能访问任何对象的实例变量,除非在方法参数中显式传递该变量
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
}
}
谢谢你,李兹!我现在明白了,即使静态类被允许有实例变量,也不能访问它们。