C#中属性的构造函数初始化

时间:2011-05-16 15:16:29

标签: c#

当初始化C#类中的成员也具有完全访问权限(get,set)时,是否通过其Property方法或直接通过其成员变量在构造函数内初始化它们?

public class Car
{
    private string _brand;

    public Car(string brand)
    {
        // this
        _brand = brand;
        // or that
        Brand = brand;  
    }

    public Brand { get { return _brand; } set { _brand = value; } }
 }

7 个答案:

答案 0 :(得分:3)

您应该使用Property而不是成员变量来设置值。这样您就可以更改“setter”的实现,只需在一个地方修改您的代码。

例如,如果您发现要求在设置品牌时还必须更新其他属性,则品牌有默认颜色,例如,您可以在设置的{...}块中执行此操作品牌财产。如果在构造函数中设置_brand的值,则现在还必须手动更新构造函数中的Color属性,或者更新构造函数以现在初始化Brand属性而不是字段。

此外,在您的财产如此简单的情况下,使用“自动财产”

更为常规
public Brand { get; set; }

如果你需要执行比简单属性集更多的逻辑并且得到更多的逻辑,我只会使用支持字段。

答案 1 :(得分:2)

除非您在需要触发的属性的Set方法中有特定代码,否则请使用内部变量。

答案 2 :(得分:2)

我总是使用属性访问器,因为这样您的代码就可以为更改做好更多准备。例如,正如其他人所指出的那样,您在此处提供的代码可以使用自动属性进行重写。此外,如果您在整个班级中使用属性访问器,则可以随后更改属性的实现,并且您只需在一个位置更改代码。

答案 3 :(得分:1)

构建类时,它应该可以使用,不需要进一步的初始化操作。

如果必须以某种方式初始化属性,则应通过构造函数完成。

答案 4 :(得分:0)

我总是做/看到_brand =品牌的方式。这是有道理的,你正在设置类的内部状态。这些属性用于外部访问。

答案 5 :(得分:0)

我建议使用他们的成员变量,这是对堆栈的一次调用。

答案 6 :(得分:0)

在构造函数中,我更喜欢_brand = brand。我认为getter和setter是外部类调用的方法。当你避免额外的方法调用时,开销也会略微减少。