C#索引器

C#索引器

索引器允许类或者结构的实例按照与数组相同的方式进行索引取值,索引器与属性类似,不同的是索引器的访问是带参的。

索引器和数组比较:

(1)索引器的索引值(Index)类型不受限制

(2)索引器允许重载

(3)索引器不是一个变量

索引器和属性的不同点

(1)属性以名称来标识,索引器以函数形式标识

(2)索引器可以被重载,属性不可以

(3)索引器不能声明为static,属性可以

定义索引器的方式与定义属性有些类似,其一般形式如下:

  [修饰符] 数据类型 this[索引类型 index]

  {

    get{//获得属性的代码}                                             

    set{ //设置属性的代码}

}

建立以Student类中定义索引器

namespace 索引器
{
    public class Student
    {
        //该类中有一个字符串类型的数组
        //建立一个数组======建立索引器
     private   string[] name=new string [2];
        //建立索引器
        //定义一个索引器,给name数组赋值和取值
    
     public string this[int index] 
     {
         get { return name[index]; }
         set { name[index]=value;}
     }
    }
}

在主界面调用索引器

namespace 索引器
{
    class Program
    {
        static void Main(string[] args)
        {
            Student stu = new Student();
            stu[0] = "张三" ;
            stu[1] = "李四";          
            Console.WriteLine(stu[0]);
            Console.ReadKey();

            
        }
    }
}

索引器允许类或者结构的实例按照与数组相同的方式进行索引取值,索引器与属性类似,不同的是索引器的访问是带参的。

索引器和数组比较:

(1)索引器的索引值(Index)类型不受限制

(2)索引器允许重载

(3)索引器不是一个变量

索引器和属性的不同点

(1)属性以名称来标识,索引器以函数形式标识

(2)索引器可以被重载,属性不可以

(3)索引器不能声明为static,属性可以

定义索引器的方式与定义属性有些类似,其一般形式如下:

  [修饰符] 数据类型 this[索引类型 index]

  {

    get{//获得属性的代码}                                             

    set{ //设置属性的代码}

}

建立以Student类中定义索引器

namespace 索引器
{
    public class Student
    {
        //该类中有一个字符串类型的数组
        //建立一个数组======建立索引器
     private   string[] name=new string [2];
        //建立索引器
        //定义一个索引器,给name数组赋值和取值
    
     public string this[int index] 
     {
         get { return name[index]; }
         set { name[index]=value;}
     }
    }
}

在主界面调用索引器

namespace 索引器
{
    class Program
    {
        static void Main(string[] args)
        {
            Student stu = new Student();
            stu[0] = "张三" ;
            stu[1] = "李四";          
            Console.WriteLine(stu[0]);
            Console.ReadKey();

            
        }
    }
}