인덱서는 인덱스를 이용해 객체 내의 데이터에 접근하게 해주는 프로퍼티이다.
인덱서를 선언하는 방법
class 클래스이름
{
// 한정자 인덱서형식 this[형식 인덱스식별자]
{
get
{
// 인덱스식별자를 이용하여 내부 데이터 반환
}
set
{
// 인덱스식별자를 이용하여 내부 데이터 저장
}
}
}
인덱서는 프로퍼티처럼 식별자를 따로 가지지는 않는다. 프로퍼티는 이름을 통해 객체 내의 데이터에 접근하지만 인덱서는 인덱스를 통해 객체 내의 데이터에 접근한다.
인덱서의 선언 예
인덱서를 통해 정수 형식 배열 array에 접근한다. 인덱서를 통해 데이터를 저장할 때 인덱스보다 배열의 크기가 작다면 배열의 크기를 인덱스에 맞춰 재 조정하는 코드이다.
class MyList
{
private int[] array;
public MyList()
{
array = new int[3];
}
// 인덱서
public int this[int index]
{
get
{
return array[index];
}
set
{
if(index >= array.Length)
{
Array.Resize<int>(ref array, index + 1);
Console.WriteLine("Array Resized: {0}",array.Length);
}
array[index] = value;
}
}
}
인덱서 예제
using System;
namespace Indexer
{
class MyList
{
private int[] array;
public MyList()
{
array = new int[3];
}
// 인덱서
public int this[int index]
{
get
{
return array[index];
}
set
{
if(index >= array.Length)
{
Array.Resize<int>(ref array, index + 1);
Console.WriteLine("Array Resized: {0}",array.Length);
}
array[index] = value;
}
}
public int Length
{
get
{
return array.Length;
}
}
}
class Program
{
static void Main(string[] args)
{
MyList list = new MyList();
for (int i = 0; i < 5; i++)
list[i] = i; // 배열을 다루듯 사용
for (int i = 0; i < list.Length; i++)
Console.WriteLine(list[i]); // 데이터를 얻어올 때도 인덱스를 사용
}
}
}
'프로그래밍 언어 > C#' 카테고리의 다른 글
C# 중첩 클래스 (Nested Class) (0) | 2022.07.20 |
---|---|
C# 부분 클래스 (partial) (0) | 2022.07.19 |
C# 확장 메서드 (Extension Method) (0) | 2022.07.18 |
C# 리플렉션과 어트리뷰트 (Reflection and Attributes) (0) | 2022.07.08 |
C# 전처리기의 모든것 (0) | 2022.07.04 |