728x90
개요
동아리 프로젝트 작업하다가 새로운 연산자를 알게되었다.
arr[^1];
arr[0..^2];
arr[..]
위과 같은 연산자들이다.
본문
찾아보니 인덱스 범위 표현식(Range expression)이라고 부르는 듯하다.(C# 8.0)
크게 ^ 연산자와 .. 연산자가 있다.
^ 연산자
int[] arr = { 0, 1, 2, 3, 4 };
int n = arr[^1]; // n == 4
// arr[^1] == arr[arr.count-1]
^ 연산자는 위와 같이 count-n과 같은 역할을 수행한다.
arr[^1]로 마지막 값에 접근 할 수 있다.
arr[^0]은 마지막 값의 다음 위치를 가르키니 주의 해야한다.(arr[^0] == arr.count)
.. 연산자
int[] arr = { 0, 1, 2, 3, 4 };
arr[3..]; // { 3, 4 }
arr[2..^1]; // { 2, 3 }
arr[..]; // { 0, 1, 2, 3, 4 }
arr[..^0]; // { 0, 1, 2, 3, 4 }
위와 같이 슬라이싱에 활용할 수 있다.
arr[시작 값 인덱스..끝값 다음 인덱스]와 같은 형태로 사용한다.
따라서 전체 값을 슬라이싱 하려면 [0..^0], [..], [0..] 등과 같은 형태로 나타낼 수 있다.
결론
두 연산자를 적재적소에 활용하면 코드가 훨씬 간결해질 수 있을 것 같다.
RIder를 사용하면서 배우는 점이 많은 것 같다. 끗
참조
https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-8.0/ranges
https://www.csharpstudy.com/latest/CS8-indexing-slicing.aspx
'언어 > C#' 카테고리의 다른 글
[C#] invalidoperationexception 에러 (0) | 2023.01.19 |
---|---|
[C#] 맨날 까먹는 예약어 및 키워드 정리 (0) | 2022.12.12 |