属性常犯错误
private int _minHeight = default(int);
public int MinHeight
{
set{
_minHeight = value;
}
get{
return _minHeight;
}
}
1、 初学者可能觉得有点画蛇添足,不如直接命名为:
public int MinHeight;
这样岂不简单,干吗还要用getter和setter封装起来,额外的函数调用也使效率有损。
有时候在开发项目时,开始时我们要画的可能只是一条蛇,但是项目后期需求变了,改画一条龙了。所以在项 目初期画蛇的时候添上一对足还是很有远见的。
getter与setter(属性存取器)可以像方法一样封装逻辑并且像变量一样使用,建议所有非静态只读和常量,定 义为private,然后给其添加相应属性存取器,用于赋值与读取。
2、在其它方法体内(包涵类外与类内),不建议直接读写变量。
即使 它目前可以被直接读写,我们也要通过调用属性存取器也调用。这一点有点麻烦,但很重要,很高老手有时也会犯错误。如下所示:
private int _minHeight = int.MinValue;
public int MinHeight//或者是 protected、internal,甚至是private
{
set{
_minHeight = value;
//即使这里目前没有其它处理逻辑
}
get{
return _minHeight;
}
}
public void Method1 (int minHeight)
{
this.MinHeight = minHeight;//在这里不要使用 this._minHeight直接读写
//
}
public int MinHeight//或者是 protected、internal,甚至是private
{
set{
_minHeight = value;
//即使这里目前没有其它处理逻辑
}
get{
return _minHeight;
}
}
public void Method1 (int minHeight)
{
this.MinHeight = minHeight;//在这里不要使用 this._minHeight直接读写
//
}
即使变量的访问是受保护的或者或者是私有的,也要使用属性存取器。
3、 原则是:对于变量的读取,要用属性存取器封装,无论其访问修饰符如何,即使其属性存取器内除了存取目前 没有任何其它逻辑。