인덱서는 클래스에 [ ] 를 통해 어떠한 값을 설정하거나 가져오는 방법입니다.
프로퍼티처럼 get, set 설정을 해줘야 합니다.
public 리턴타입 this [타입 변수명] 으로 시작합니다. (int, string 모두 가능합니다!)
(복잡해질 수 있어 안쓰겠거니 했는데 많은 변수에 값을 할당할 때
일일히 값 체크를 하며 하드코딩 하는 형태가 되는데 사용해보니 조금 더 머리가 덜 아픈 느낌이 듭니다.)
using System;
namespace ConsoleApp2
{
class A
{
public int a;
public int b;
public int c;
public int this [int index] //인덱서 설정 indexer
{
get
{
switch (index)
{
case 0:
return a;
case 1:
return b;
case 2:
return c;
default:
return 0;
}
}
set
{
switch (index)
{
case 0:
a = value;
break;
case 1:
b = value;
break;
case 2:
c = value;
break;
default:
break;
}
}
}
}
class Program
{
static void Main(string[] args)
{
A a = new A();
int[] values = { 33, 28, 90 };
for (int i = 0; i < 3; ++i)
{
a[i] = values[i]; //indexer set
Console.WriteLine(a[i]); //indexer get
}
Console.WriteLine("a = {0}, a[0] = {1}", a.a, a[0]);
Console.WriteLine("b = {0}, a[1] = {1}", a.b, a[1]);
Console.WriteLine("c = {0}, a[2] = {1}", a.c, a[2]);
}
}
}
'C# > 문법' 카테고리의 다른 글
[C#] IComparer 정렬 (클래스, 구조체 정렬) (0) | 2023.10.24 |
---|---|
[C#] 출력 형식 ToString("C D N F E X") (+2진수 8진수 16진수) (0) | 2022.10.10 |
[C#] Serialization.Formatters.Binary (오브젝트 저장, 불러오기) (0) | 2022.05.07 |
[C#] ? : Nullable Type (0) | 2022.04.24 |
[C#] 파일 입출력 (FileStream, BinaryReader/Writer, StreamReader/Writer) (0) | 2022.04.24 |