这篇文章主要是讨论使用属性的必要性
做任何事物的分析时,首先是要先给该事物一个定义,属性:是一种可以像字段一样访问数据的方法,或者更精简地说,属性就是方法。
相比于字段来说,属性有如下的优势:
1.简化代码的编写。当然了,有人说我只用命名一个简单的变量不就可以访问以及赋值了么,的确,但是如果想实现属性所有的功能,比如访问限制,这种情况下可能就得写一些方法代码了。
2.对.net框架更好的支持。对于这一点,开发过silverlight wpf等等数据绑定类的技术的童鞋们肯定知道,属性让开发变得非常有效率,它的绑定机制让前后台的交互更加方便。比如:
textBoxCity.DataBindings.Add("Text",
address, "City");
3.访问限制。这一点字段很难做到,由于字段本身的限制,要么设置为私有的private,外部不能访问,或者设置为public,所有访问都允许。但是属性完全可以通过不同的访问修饰符来进行访问限制,例如:
public string Name{
private get;
set;
}
4.具有方法的特性。正如上面所说的,属性即方法,只不过它是一种简化后的方法,这样的设计大大简化了我们代码的编写,更重要的是,我们可以在属性里面定义自己的逻辑。比如:通过属性的set访问器,不允许空值
public class Customer
{
private string name;
public string Name
{
get { return name; }
set
{
if (string.IsNullOrEmpty(value))
throw new ArgumentException(
"Name cannot be blank",
"Name");
name = value;
}
// More Elided.
}
}
我们还可以使用属性来支持多线程对数据的操作
public class Customer
{
private object syncHandle = new object();
private string name;
public string Name
{
get
{
lock (syncHandle)
return name;
}
set
{
if (string.IsNullOrEmpty(value))
throw new ArgumentException(
"Name cannot be blank",
"Name");
lock (syncHandle)
name = value;
}
}
// More Elided.
}
5.在接口中定义属性,我们知道在接口中我们只能定义方法 事件 无参属性 有参属性(即索引器),不能定义任何实例字段。接口的这种特性也让属性比字段更加高大山啦!
谢谢!