1,属性是C#从VB提取的,而不是C++或者JAVA。
2,在语法上更像是调用了一个字段,但实际上是调用了属性访问器。包括 get访问器和set访问器
3,set访问器不指定参数,但编译器会假定一个参数value.
4,VB6程序员注意:C#不区分Set和Let,总是用set.
5,属性的只读与只写
在属性中省略set访问器,就可以创建只读属性
在属性中省略get访问器,就可以创建只写属性
※这并不是一个好的编程方式,这样会使客户机代码的作者迷惑,如果要这么做,最好是用一个方法代替。
6,属性的访问修饰符
C#允许给属性的get和set访问器设置不同的修饰符(private,protected等) 但不能同时为两个设置,必须有一个具备属性的访问级别,否则就会产生一个编译错误。
如下:
private string name;
错误
public string Name
{
private
get
{
return name;
}
private
set
{
name = value;
}
}
正确
public string Name
{
private
get
{
return _name;
}
set
{
_name = value;
}
}
7,属性定义的自动实现
用自动实现的的属性,不需要声明关联的变量
例如,6中定义的private string name; name变量,编译器会自动创建它。
public string Name { get; set; }
注意
a,不能尝试设置只读属性
public string Name { get; }会出错,
b,可以使用访问修饰符,规则同上
public string Name { private get; set; }