-4

我正在使用这两个属性

1)

int x = 0;

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

2)

 public string ID
 {
     get;
     set;
 }

这两个属性有什么区别。

4

2 回答 2

2

当您如下例所示声明属性时, 编译器会创建一个私有的匿名支持字段,该字段只能通过属性的 get 和 set 访问器访问。

自动实现的属性(C# 编程指南)

唯一的区别是一个事实,在您的示例中,您仍然可以直接获取/设置支持字段,而不是使用属性。使用自动实现的属性,您无法做到这一点。

于 2013-08-24T09:39:39.800 回答
0

没有什么。两者都是相同的,除了您可以从第一个代码段执行此操作,而第二个代码段无法执行此操作。

int x = 0;

public int X
{
    get
    {
        return x;
    }
    set
    {
        if (value < 0) // A guard condition or some custom condition here
            value = 0;

        x = value;
    }
}

要获得更明确的答案,您可以这样做

private double seconds;

public double Hours
{
    get { return seconds / 3600; }
    set { seconds = value * 3600; }
}
于 2013-08-24T09:35:18.127 回答