为什么以这种方式初始化会导致编译时错误?

3
这可能看起来很傻,但有人能告诉我为什么下面的代码会出错吗?
    class Program
{
    static int abc;
    abc = 110;

    static void Main(string[] args)
    {
        Console.WriteLine(abc);
    }
}

但是如果我像这样进行初始化,它就可以运行了!
    class Program
{
    static int abc = 110;

    static void Main(string[] args)
    {
        Console.WriteLine(abc);
    }
}

3
类成员的初始化必须与声明一起进行。否则你实际上就把“代码”放在了方法外面,这是无效的。 - D Stanley
@DStanley:非常感谢! - Bhupinder Singh
2个回答

2

如果你想要做的事情不是在行内分配,那么你需要使用静态初始化器来完成它,否则你需要在构造函数或方法中进行分配。

    class Program
{
    static int abc;

    static Program(){
       abc = 110;
    }

    static void Main(string[] args)
    {
        Console.WriteLine(abc);
    }
}

请查看此页面获取更多相关信息。


我对C#语法进行了编辑。如需了解更多语法问题,请参阅提供的链接。 - Submersed

1

abc = 110 这一行代码不在任何方法体中。你可以在声明时初始化变量,但是在方法体外部不能有这样的赋值语句。该类文件无效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接