반응형
C# 인덱서(Indexer)
C# 인덱서(Indexer)는 클래스나 구조체의 데이터를 배열처럼 인덱스로 접근이 가능하도록 구현을 할 수 있게 합니다.
정의
this[]를 사용하여 속성처럼 get과 set으로 정의합니다.
예제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class AAAA
{
private int[] num = new int[10];
public int this[int nIndex]
{
get
{
if (nIndex < 0 || nIndex > 10)
{
throw new IndexOutOfRangeException();
}
else
{
return num[nIndex];
}
}
set
{
if (nIndex < 0 || nIndex > 10)
{
throw new IndexOutOfRangeException();
}
else
{
num[nIndex] = value;
}
}
}
}
class Program
{
static void Main(string[] args)
{
AAAA aaaa = new AAAA();
aaaa[0] = 2;
Console.WriteLine(aaaa[0]);
}
}
}
|
위와 같이 클래스에 배열변수를 인덱서를 이용해서 접근해서 get / set이 가능하도록 만들 수 있습니다.
C# 6(Visual Studio 2015)부터는 이 구문 대신
public int this[int nIndex] => num[nIndex];
이렇게 표현할 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
public int this[int nIndex]
{
get
{
if (nIndex < 0 || nIndex > 10)
{
throw new IndexOutOfRangeException();
}
else
{
return num[nIndex];
}
}
set
{
if (nIndex < 0 || nIndex > 10)
{
throw new IndexOutOfRangeException();
}
else
{
num[nIndex] = value;
}
}
}
|
s |
C# 7.0(Visual Studio 2017)부터 get 및 set 접근자 모두 본문 멤버로 구현할 수 있습니다.
1
2
3
4
5
|
public T this[int nIndex]
{
get => num[nIndex];
set => num[nIndex] = value;
}
|
반응형
'개발공부 > C#' 카테고리의 다른 글
[C#] 무명 메서드(anonymous method) (0) | 2019.10.20 |
---|---|
[C#] 제네릭 (0) | 2019.10.19 |
[C#] 이벤트(event) & 델리게이트(delegate) (0) | 2019.10.17 |
[C#] delegate (0) | 2019.10.16 |
[C#] Event (0) | 2019.10.15 |