属性可以提供公共数据成员的便利,而又不会带来不受保护、不受控制以及为经验证访问的对象数据的风险。这是通过“访问器”来实现的;访问器是为基础数据成员赋值和检索其值的特殊方法。使用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索引器分配的值
            }
        }

    }