当初始化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; } }
}
答案 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是外部类调用的方法。当你避免额外的方法调用时,开销也会略微减少。