C# 인덱스 사용 자습서

5149 단어 c#인덱스

개요


색인자(Indexer)는 객체가 배열처럼 아래 첨자로 접근할 수 있도록 합니다.
클래스에 색인기를 정의할 때, 이 클래스의 동작은 가상 그룹 (virtualarray) 과 같습니다.그룹 액세스 연산자 [] 를 사용하여 클래스의 구성원에 액세스할 수 있습니다.

문법


1차원 인덱스의 구문은 다음과 같습니다.

element-type this[int index]
{
   // get  
   get
   {
      //   index  
   }

   // set  
   set
   {
      //   index  
   }
}

색인(Indexer)의 용도


색인기의 행위에 대한 성명은 어느 정도 속성 (property) 과 유사합니다.속성 (property) 처럼 get과 set 접근기를 사용하여 인덱스를 정의할 수 있습니다.단, 속성은 특정한 데이터 구성원을 되돌려주거나 설정하고, 인덱스는 대상 실례의 특정한 값을 되돌려주거나 설정합니다.다시 말하면, 실례 데이터를 더 작은 부분으로 나누고, 모든 부분을 색인하고, 모든 부분을 가져오거나 설정한다.
속성 (property) 을 정의하면 속성 이름을 제공합니다.색인자가 정의할 때 이름은 없지만,this 키워드는 대상의 실례를 가리킨다.다음 예제에서는 이 개념을 보여 줍니다.

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();
      }
   }
}
위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 발생합니다.
Zara
Riz
Nuha
Asif
Davinder
Sunil
Rubic
N. A.
N. A.
N. A.

인덱스 다시 로드(Indexer)


색인(Indexer)을 다시 로드할 수 있습니다.인덱스가 선언될 때도 여러 개의 인자를 가지고 있을 수 있으며, 매개 인자는 서로 다른 유형일 수 있다.색인기가 정형화되어야 할 필요는 없다.C# 인덱스는 문자열 유형과 같은 다른 유형일 수 있습니다.
다음 예제에서는 인덱스 재부팅을 보여 줍니다.

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();
      }
   }
}
위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 발생합니다.
Zara
Riz
Nuha
Asif
Davinder
Sunil
Rubic
N. A.
N. A.
N. A.

이상은 C#색인기의 사용 강좌에 대한 상세한 내용입니다. C#색인기의 사용에 대한 더 많은 자료는 저희 다른 관련 글을 주목해 주십시오!

좋은 웹페이지 즐겨찾기