如果我有房产,我还需要一个房子吗?

时间:2016-02-27 09:34:06

标签: c# properties field

因此,在自动实现的可用性和属性的初始化之后,我甚至需要为我的属性创建一个字段吗?

这似乎更清洁:

class A {
public int X {
        get;set;
    } = 1;
}

比这个:

class A {
    int x = 1;
    public int X {
        get {
            return x;
        }
        set {
            x = value;
        }
    }
}

2 个答案:

答案 0 :(得分:3)

在第一种情况下,编译器已经提供了一个支持字段 - 它只是隐含的(并且它给出了一个你无法在代码中引用的名称)。请注意,作为生成代码中的支持字段,因为属性本​​身实际上只是一对方法,其中一些元数据链接它们 - 属性的存在不会向状态添加任何状态宾语。状态仅 存储在字段中。

当写在一行时它甚至更干净 - 我通常将其视为:

class A
{
    public int X { get; set; } = 1;
}

答案 1 :(得分:1)

在这种情况下你不需要支持字段,但是如果你想用例如OnPropertyChanged()操作属性那么你需要有一个支持字段

public int X {
    get {
        return x;
    }
    set {           
        x = value;
        OnPropertyChanged()
    }
}