属性可以提供公共数据成员的便利,而又不会带来不受保护、不受控制以及为经验证访问的对象数据的风险。这是通过“访问器”来实现的;访问器是为基础数据成员赋值和检索其值的特殊方法。使用set访问器可以为数据成员赋值,使用get访问器可以检索数据成员的值。示例:
class Person
{
private string m_name;
public string Name
{
get
{ return m_name; }
set
{ m_name = value;}
}
private int m_Age ;
public int Age
{
get
{return m_Age;}
set
{m_Age = value; }
}
}
还有一种自动实现的属性:
public class Contact
{
public string Name { get; set; }
public string Address { get; set; }
public int ContactNumber { get; set; }
public int ID { get; private set; } // readonly
}
编译器为每个自动实现的属性创建了后备字段,这些字段无法直接从源代码进行访问。这个具体是什么含义也不是太清楚,以后多加体会吧。
索引器允许类或结构的实例就像数组一样进行索引。索引器类似于属性,不同之处在于它们的访问器采用参数。
class MyArrayList
{
//定义索引器,索引器类似于属性,用this来进行定义
public object this[int i]
{
object[] obj = new object[] { };
get
{
return obj[i];
}
set
{
obj[i] = value; //value用来定义set索引器分配的值
}
}
}