定义自定义对象属性的正确方法?

时间:2017-03-23 20:26:37

标签: c# object

我目前正在定义自定义对象属性,如下所示:

private int count;
public int Count
{
    get { return count; }
    set { Count = value; }
}

我的第一部分问题是,在定义像这样的字段之间有什么区别:

private int count;
public int Count {get; set;}

除非你想检查一下这个值:

private int count;
public int Count
{
    get { return count; }
    set
    {
        if (value >= 0)
        {
            count = value;;
        }
        else MessageBox.Show("Value is negative", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
    }
}

第二部分是否有更好的方法在C#中定义对象属性?

1 个答案:

答案 0 :(得分:2)

在第一个示例中,您定义了一个私有字段和一个属性来访问它。在第二个示例中,您定义了一个私有字段和 auto -property,其中具有自己的支持字段。所以是的,存在差异。

除非您在最后一个示例中需要自定义get/set逻辑,否则我将使用auto-property。但是,你不应该有一个单独的支持字段(因为它独立于属性),所以你的代码就是:

public int Count {get; set;}

在任何一种情况下(完整或自动);您正在使用在C#中定义属性的正确方法。我唯一要补充的是,如果你只有get属性,你可以在C#6 +中使用表达式身体成员:

public string Title => "Title"; //basically public string Title {get;} = "Title";

这可以更多效率,因为它没有使用支持字段。