Tutorial C#login
Tutorial C#
pengarang:php.cn  masa kemas kini:2022-04-11 14:06:23

Pengindeks C#



Pengindeks Membenarkan objek diindeks seperti tatasusunan. Apabila anda mentakrifkan pengindeks untuk kelas, kelas itu berkelakuan seperti tatasusunan maya. Anda boleh mengakses kejadian kelas ini menggunakan operator akses tatasusunan ([ ]).

Sintaks

Sintaks pengindeks satu dimensi adalah seperti berikut:

element-type this[int index] 
{
   // get 访问器
   get 
   {
      // 返回 index 指定的值
   }

   // set 访问器
   set 
   {
      // 设置 index 指定的值 
   }
}

Tujuan pengindeks (Pengindeks)

Tujuan pengindeks Pengisytiharan tingkah laku agak serupa dengan sifat. Sama seperti sifat, anda boleh mentakrifkan pengindeks menggunakan aksesori get dan set. Walau bagaimanapun, sifat mengembalikan atau menetapkan ahli data tertentu, manakala pengindeks mengembalikan atau menetapkan nilai khusus contoh objek. Dalam erti kata lain, ia memecahkan data contoh kepada bahagian yang lebih kecil dan mengindeks setiap bahagian, mendapatkan atau menetapkan setiap bahagian.

Mentakrifkan harta termasuk memberikan nama harta benda. Pengindeks ditakrifkan tanpa nama, tetapi dengan kata kunci ini, yang menunjuk kepada contoh objek. Contoh berikut menunjukkan konsep ini:

using System;
namespace IndexerApplication
{
   class IndexedNames
   {
      private string[] namelist = new string[size];
      static public int size = 10;
      public IndexedNames()
      {
         for (int i = 0; i < size; i++)
         namelist[i] = "N. A.";
      }
      public string this[int index]
      {
         get
         {
            string tmp;

            if( index >= 0 && index <= size-1 )
            {
               tmp = namelist[index];
            }
            else
            {
               tmp = "";
            }

            return ( tmp );
         }
         set
         {
            if( index >= 0 && index <= size-1 )
            {
               namelist[index] = value;
            }
         }
      }

      static void Main(string[] args)
      {
         IndexedNames names = new IndexedNames();
         names[0] = "Zara";
         names[1] = "Riz";
         names[2] = "Nuha";
         names[3] = "Asif";
         names[4] = "Davinder";
         names[5] = "Sunil";
         names[6] = "Rubic";
         for ( int i = 0; i < IndexedNames.size; i++ )
         {
            Console.WriteLine(names[i]);
         }
         Console.ReadKey();
      }
   }
}

Apabila kod di atas disusun dan dilaksanakan, ia menghasilkan keputusan berikut:

Zara
Riz
Nuha
Asif
Davinder
Sunil
Rubic
N. A.
N. A.
N. A.

Memuatkan Semula Pengindeks

Pengindeks boleh terlebih muatan. Pengindeks juga boleh diisytiharkan dengan berbilang parameter, dan setiap parameter boleh daripada jenis yang berbeza. Tidak perlu untuk pengindeks menjadi integer. C# membenarkan pengindeks daripada jenis lain, contohnya, jenis rentetan.

Contoh berikut menunjukkan terlebih beban pengindeks:

using System;
namespace IndexerApplication
{
   class IndexedNames
   {
      private string[] namelist = new string[size];
      static public int size = 10;
      public IndexedNames()
      {
         for (int i = 0; i < size; i++)
         {
          namelist[i] = "N. A.";
         }
      }
      public string this[int index]
      {
         get
         {
            string tmp;

            if( index >= 0 && index <= size-1 )
            {
               tmp = namelist[index];
            }
            else
            {
               tmp = "";
            }

            return ( tmp );
         }
         set
         {
            if( index >= 0 && index <= size-1 )
            {
               namelist[index] = value;
            }
         }
      }
      public int this[string name]
      {
         get
         {
            int index = 0;
            while(index < size)
            {
               if (namelist[index] == name)
               {
                return index;
               }
               index++;
            }
            return index;
         }

      }

      static void Main(string[] args)
      {
         IndexedNames names = new IndexedNames();
         names[0] = "Zara";
         names[1] = "Riz";
         names[2] = "Nuha";
         names[3] = "Asif";
         names[4] = "Davinder";
         names[5] = "Sunil";
         names[6] = "Rubic";
         // 使用带有 int 参数的第一个索引器
         for (int i = 0; i < IndexedNames.size; i++)
         {
            Console.WriteLine(names[i]);
         }
         // 使用带有 string 参数的第二个索引器
         Console.WriteLine(names["Nuha"]);
         Console.ReadKey();
      }
   }
}

Apabila kod di atas disusun dan dilaksanakan, ia menghasilkan keputusan berikut:

Zara
Riz
Nuha
Asif
Davinder
Sunil
Rubic
N. A.
N. A.
N. A.
2

Laman web PHP Cina