C# : 인덱서(Indexer)
public string this[int index]
{
get { return (index % 2 == 0) ? "짝수" : "홀수"; }
}
인덱서는 클래스의 인스턴스를 배열처럼 사용할 수 있게 하는 구문이다.
쉽게 말해서, 인스턴스 이름 옆에 [index] 붙이면 무슨 행동을 할지 정의하는 메서드이다.
아래의 코드를 보면 조금 더 이해가 잘 될 것이다.
public class Person
{
public string Name { get; set; }
public string Gender { get; set; }
public int Age { get; set; }
public string Email { get; set; }
public Object this [int index]
{
get
{
if (index == 0)
return Name;
else if (index == 1)
return Gender;
else if (index == 2)
return Age;
else if (index == 3)
return Email;
else
return null;
}
set
{
if (index == 0)
Name = value.ToString();
else if (index == 1)
Gender = value.ToString();
else if (index == 2)
Age = Convert.ToInt32(value);
else if (index == 3)
Email = value.ToString();
}
}
public override string ToString()
{
return "Name: " + Name + " / Gender: " + Gender + " / Age: " + Age + " / Email: " + Email;
}
}
class Program
{
static void Main(string[] args)
{
Person person = new Person() {
Name="Tom",
Gender="Male",
Age= 20,
Email="Tom@Test.com"
};
Console.WriteLine("Name: " + person[0]);
Console.WriteLine("Gender: " + person[1]);
Console.WriteLine("Age: " + person[2]);
Console.WriteLine("Email: " + person[3]);
}
}
코드 출처: https://developer-talk.tistory.com/323
person[0]은 Name를 반환하고,
person[1]은 Gender를 반환한다.
이렇게 멤버에 인덱싱을 해줄 수 있는게 바로 인덱서다.
(숫자 말고 문자열로 인덱싱을 해줄 수도 있다.)