Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#为什么可以';您不能更改类范围中的变量值吗?_C# - Fatal编程技术网

C#为什么可以';您不能更改类范围中的变量值吗?

C#为什么可以';您不能更改类范围中的变量值吗?,c#,C#,我不明白为什么C#在定义类作用域后不允许更改它的变量值 考虑代码(这不起作用): 很明显,你可以像这样做 class Foo { private int x = 0; } 还是这个 class Foo { private int x; public void Bar() { x = 5; } } 但我不明白为什么第一种方法不能像我想的那样工作,只要变量在同一范围内,您就可以修改它?代码>x=0只能是方法的一部分。如果private int

我不明白为什么C#在定义类作用域后不允许更改它的变量值

考虑代码(这不起作用):

很明显,你可以像这样做

class Foo
{
   private int x = 0;
}
还是这个

class Foo
{
    private int x;
    public void Bar()
    {
        x = 5;
    }
}

但我不明白为什么第一种方法不能像我想的那样工作,只要变量在同一范围内,您就可以修改它?

代码>x=0只能是方法的一部分。如果
private int x=0编译器”实际上会将其拆分,并将赋值放入构造函数中,这样您就可以编译

class Foo
{
    private int x;
    public Foo()
    {
        x = 0;
    }
}
因为这个地区

类Foo{…这里…}

为类的声明而设计。因此,它包含成员及其默认初始化和函数。你想把函数代码放进去,这是不允许的


如果你需要构建代码,请使用构造函数。

大多数语言中的oop架构,如果不是allAn Assignment语句,比如
x=0
只能在一个方法中。问问自己:如果您直接在类中编写代码(而不是在构造函数/方法/属性等中编写),您希望在什么时候执行该代码?这个问题的答案应该告诉你应该把代码放在哪里。
class Foo
{
    private int x;
    public Foo()
    {
        x = 0;
    }
}