luce in altisBLUE SKY

category Photo

Blog


Index & Range

C# 8.0에서의 Index.

 

1. "^"의 개념. (Index fromEnd 의 단축 표기법)

아래의 배열이 있다고 가정했을 때..

int a = [1,2,3,4,5,6,7];

int b = a[^2]; 

^ => 뒤에서 부터 순서를 센다. 단 이때는 제로 베이스가 아님 

즉 실행하면 b = 6 이 나온다.

 

2. Index 객체

c# 8.0부터는 Index란 개념이 생겼다.

역시 객체라 아래와 같이 선언이 가능하다

Index idx = new Index(2);

 

ex) 

string a = "abcdefg";

int idx1 = 2;

Index idx2 = new Index(2);

char c1 = a[idx1];

char c2 = a[idx2];

 

둘 다 같은 결과가 나온다.

c1 = c 

c2 = c

그럼 Index를 쓰는 이유가 뭘까? Index 객체는 int로 인덱스를 지정했을 때 값만 보관하는 것과는 달리 값, 방향성을 보관한다.

* Index 선언 시 두 번째 인자를 true로 주면 ^ 와 같이 뒤에서 순서를 센다. 

ex ) new Index(2, fromEnd : true)

 

Index 객체 만드는 방법 

1. new 사용 

Index indx1 = new Index(3);

2. 정적 메소드 사용

Index indx 1= Index.FromStart(3);

3. 단축 표기법 사용

Index idx1 = 3;

Index idx2 = ^3;

실전에서는 아무래도 3번이 가장 많이 쓰이지 않을까? ㅎㅎ

 

3. Range 

c# 8.0부터 Range 를 사용할수 있는데 사용법은 다음과 같다.

* 배열에 ".." 을 사용할수 있다. 

int[] arr = {1,2,3,4,5,6} 이란 배열이 있다고 가정하면..

Ex )

int[] arr2 = arr[1..^2]; 

=> 2,3,4,5

Ex2)

Range r1 = new Range(new Index(1), new (1,true));

int [] arr2 = arr[r1];

=> 2,3,4,5,6

'게임 > 프로그래밍' 카테고리의 다른 글

New Syntax in C# 8.0  (0) 2020.06.01
C# 8.0 Switch Expression  (0) 2020.06.01
2017 언리얼 서밋 프리미엄  (0) 2017.10.31
자신의 컴퓨터가 듀얼 코어 이상이라면...  (0) 2009.08.26
[STL] Vector 정렬..  (0) 2009.07.22