c# – 为什么我不能在静态类中拥有实例成员但是我可以在静态方法中拥有实例成员?

我们知道如果一个类是静态的,那么类中的所有成员都必须是静态的;静态类中不能有任何实例成员.如果我们尝试这样做,我们会得到编译时错误.

但是如果在静态方法中有一个实例成员,我就不会遇到编译时错误.

    public static class MyStaticClass
    {
        // cannot do this
        //int i;

        // can do this though.
        static void MyStaticMethod()
        {
            int 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 
    }
}

转载注明原文:c# – 为什么我不能在静态类中拥有实例成员但是我可以在静态方法中拥有实例成员? - 代码日志