转自:http://www.cnblogs.com/jobs2/archive/2012/09/09/2677824.html
例如下面
class myClass
{
//一般属性用法
private string name;
public string Name
{
get { return name;}
set { name = value;}
}
//自动属性
public string Name
{
get;
set;
}
}
C#中用get和set对类的属性进行访问和设置,保障类中数据的安全。自动属性是不对字段进行逻辑验证的操作.由于自动属性可以省略后背字段,结果我很多时候都会忍不住用自动属性,而且代码也比带后备字段的属性来的明了。这样子写,这两种方法没任何区别.
那么什么情况下用一般写法 什么情况下用自动写法?
你需要对这个变量做一些限制的时候 比如:
String username;
//你想限制这个用户名只能有10个字符长度
public String UserName
{
get{return username;}
set{if(value.Length<=10){username=value;}}
}
简单的不需要限制的直接存取的就省力点用自动属性,而需要做出限制的就加个后背字段重新实现一次属性.
另外:使用get/set,最主要的是基于oop思想编程,使得“属性和行为分离”。通过get/set可以设置某属性只读,也可以控制到某一层可读/可写,也可以通过设置条件使数据合法等
class A { private int_x; public int x { get{return _x;} protected set { if(value>=0) { _x=value; } } } }