C\#색인 기 분석(Indexer)

4817 단어 c#색인 기Indexer
색인 기(Indexer)는 한 대상 이 배열 처럼 색인 되 는 것 을 허용 합 니 다.클래스 에 색인 기 를 정의 할 때 이러한 행 위 는 가상 배열(virtual array)과 같 습 니 다.이러한 인 스 턴 스 에 접근 하기 위해 서 는 배열 접근 연산 자([])를 사용 할 수 있 습 니 다.
문법
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.
2
이상 은 C\#색인 기(Indexer)의 상세 한 내용 을 분석 하 는 것 입 니 다.C\#색인 기(Indexer)에 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!

좋은 웹페이지 즐겨찾기