为什么我不能在没有方法的情况下设置类对象的属性值?

Ray*_*awn 0 c# function object

我在设置属性时遇到问题,并意识到我只能在函数或方法中设置属性.我的问题是为什么会这样?

这是我的代码有效:

public class SomeClass
{    
    Car car = new Car();

    public Car JustAMethod()
    {
        Car car = new Car();
        car.year = 2012;

        return car;
    }        
}
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用:

public class SomeClass
{        
    Car car = new Car();
    car.year = 2012;//I get an error here
}
Run Code Online (Sandbox Code Playgroud)

Pla*_*ure 5

语言规范(大多数情况下)禁止在类级别执行任意语句.所有可以做的是为类的静态成员或实例成员指定默认值.

一般来说,所有代码都必须在类的方法中执行.

正如AntLaC所提到的,您可以通过使用对象初始化语法指定值来解决这个问题.由于可以在类级别定义对象(作为"静态或实例成员的默认值"),因此使用如下语法也可以:

public class SomeClass
{
    Car car = new Car() {
        year = 2012;
    };
}
Run Code Online (Sandbox Code Playgroud)