메뉴 바로가기

서브메뉴 바로가기

본문 바로가기

logo

C# .NET 자료실

General this [] 사용하기

2010.09.30 16:59

WhiteAT 조회 수:16274

C++ 에는 없고 C#에 있는  this [] 기능의 막강한 기능에 대해 알아보겠습니다.

 

작업을 하다보면 동일한 종류의 데이터를 묶어서 새로운 클래스를 만들어 사용하는 경우가 있는데,

동일한 종류의 데이터를 인덱스 형태의 Property로 사용할수 있습니다.

이 기능은 배열의 인덱스 값만으로 내부 데이터를 set, get 할수 있습니다.

 

 

학생 클래스 WATStudent 가 있고,

학생 클래스를 멤버로 사용하는 학생들 클래스 WATStudents 를 예로 들겠습니다.

this[]는 학생번호로 학생클래스를 가져오는데 사용됩니다.

(참고로 this[] 의 이해를 위해 예외 처리부분과 Out of Bounds 등의 처리는 하지 않았습니다.)

 

C++ 경우

class WATStudent     // 대략 이렇습니다.

{

     CString strName;

     int iScore;  

 

class WATStudents

{

     class WATStudent student[50] ;  // 대략 이렇습니다.

 

      // 학생 클랙스 얻는 함수

     WATStudent GetStudent(int index){

              return student[index];

      }

     void SetStudent(int index, WATStudent student)

    {

          student[index] = student;

     }

}

 

main()

{

     WATStudents students;

 

     // 5번째 학생 정보 얻기

     WATStudent oneStudent = students.GetStudent(4);

 

}

 

C++ 에서는 이와 비슷한 형태를 가질 것입니다.

학생 클래스를 얻기 위해 GetStudent() 메소드가 선언되었고,

학생 클래스를 입력하기 위해 SetStudent() 메소드가 사용되어

2개의 다른 메소드를 만들어 사용해야 합니다.

 

이 형태를 C# 으로 구현해 보겠습니다.

 

 

C#

class WATStudent     // 대략 이렇습니다.

{

     CString strName;

     int iScore;  

 

class WATStudents

{

     class WATStudent student[50] ;  // 대략 이렇습니다.

 

      // 학생 클랙스 얻는 함수

     WATStudent this[int index]{

            get

             {

              return student[index];

             }

            set

             {

              student[index] = value;

             }

      }

}

 

main()

{

     WATStudents students;

 

     // 5번째 학생 정보 얻기

     WATStudent oneStudent = students[4]; 

}

 

   

C#은 C++에 비해 짧은 코드로 구현 가능하여 가시성이 좋다.

관련 문서가 검색되었습니다.
  1. [2018/02/26] List 에서 고유값 얻기 by WhiteAT (4027)
  2. [2016/09/24] XML 으로 환경설정 저장하기 ( \n,엔터값 포함, NewLine) by WhiteAT (9667)
  3. [2015/05/22] C#, 아두이노 간의 WIFI 통신으로 LCD 제어 by WhiteAT (4565)
  4. [2015/03/13] 항상 마지막에 추가한 TEXT 보이게 by WhiteAT (15782)
  5. [2014/01/17] ComboBox Text 편집 안되게 by WhiteAT (14491)
  6. [2014/01/08] if 문에서 여러개 비교할때 by WhiteAT () *3
  7. [2013/12/30] C++, C# 간단한 기능 비교 by WhiteAT (12884)
  8. [2013/12/18] 3자리마다 ,(콤마) 찍기 (원화, 달러 표시) by WhiteAT (15224)
  9. [2013/09/29] 설치된 IE 버전 얻기 by WhiteAT (12397)
  10. [2013/08/29] byte array to Hexa String by WhiteAT (13026)