private int property1
public int Property1
{
get
{
return property1 ;
}
set
{
if (value>1) //这里校验
property1= value ;
else
property1=1;
}
}
//实例属性,可读可写
public int StrCount
{
get
{
return m_strCount;
}
set
{
if (value>m_strCount)
{
strArray = new string[value];
for (int i=0;i<value;i++)
{
strArray[i] = String.Format("String No.{0}",i);
}
m_strCount = value;
}
}
}
private static string m_strName = "MyClass";
//一个静态属性,只读
public static string ClassName
{
get
{
return m_strName;
}
}
class B
{
private A _a;
public A item
{
get
{
if(_a=null)
_a=new A();
return _a;
}
set{_a=value;}
}
}
对C#类的属性作个简单的总结:
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等) 但不能同时为两个设置,必须有一个具备属性的访问级别,否则就会产生一个编译错误。
例如:
错误的写法:
正确的写法:
7,属性定义的自动实现
用自动实现的的属性,不需要声明关联的变量
例如,6中定义的private string name; name变量,编译器会自动创建它。
注意:
a,不能尝试设置只读属性
public string Name { get; }会出错,
b,可以使用访问修饰符,规则同上
public string Name { private get; set; }
介绍完了,感觉如何呢?对C#类的属性,是不是感觉已经掌握的差不多了。
脚本学堂,祝大家学习进步。