C# 8의 System.Index 및 System.Range

2023. 9. 12. 11:55·C#
반응형

C# 8은 여러 가지 새로운 기능을 가져왔는데, 그 중 하나는 컬렉션의 인덱싱과 슬라이싱을 위한 새로운 System.Index 및 System.Range 타입입니다. 이 글에서는 이러한 추가 기능에 대해 자세히 알아보고, 더 간결하고 표현력 있는 코드를 작성하는 방법을 소개하겠습니다.

 

System.Index 

C# 8 이전에는 배열이나 리스트에서 끝에서부터 요소에 접근하려면 일부 계산을 수행해야 했습니다. System.Index를 사용하면 이 과정이 더 직관적으로 됩니다.

code int[] numbers = { 0, 1, 2, 3, 4, 5 }; 
Index lastElement = ^1; // 마지막 요소를 나타냅니다. 
Console.WriteLine(numbers[lastElement]); // 출력: 5

^ 연산자는 끝에서부터 세기 위해 사용됩니다. 따라서 ^1은 마지막 요소를 의미하며, ^2는 끝에서 두 번째 요소를 의미합니다.

 

System.Range 

System.Index가 단일 요소에 쉽게 접근할 수 있게 해주었다면, System.Range는 일련의 요소를 선택할 수 있도록 해주어 슬라이싱을 간단하게 만들어줍니다.

code int[] numbers = { 0, 1, 2, 3, 4, 5 }; 
Range firstThree = 0..3; // 인덱스가 0부터 2까지인 요소들을 선택합니다. 
int[] subset = numbers[firstThree]; // 출력: { 0, 1 ,2 }

이 예제에서 .. 연산자는 범위를 정의합니다. 시작 인덱스는 포함되고 종료 인덱스는 제외됩니다.

 

System.Index와 System.Range를 함께 사용하여 보다 동적인 작업을 수행할 수 있습니다.

int[] numbers = { 0 ,1 ,2 ,3 ,4 ,5 };
Range lastThree = ^3..^0;
int[] subset = numbers[lastThree]; // 출력: { 3 ,4 ,5 }

 

Substring 작업: 길이 계산 없이 문자열을 빠르게 슬라이스합니다.

string message = "Hello World!";
Console.WriteLine(message[^1]); // 출력: !
Console.WriteLine(message[^6..^0]); // 출력: World!

 

리스트 조작: 항목의 하위 집합을 쉽게 가져옵니다. 

List<string> fruits = new List<string> { "Apple", "Banana", "Cherry", "Date" };
var lastTwo = fruits[^2..]; // 출력: {"Cherry", "Date"}

 

배열 조작: 추가 계산 없이 하위 배열 추출합니다.

int[] array = { 1 ,2 ,3 ,4 ,5 ,6 };
int[] firstHalf= array[..^3]; //출력:{ 1,2,3 }

 

기억해야 할 점 

  • 성능 : 배열 슬라이싱 시 새 배열이 할당되고 요소가 복사됩니다. 따라서 자주 슬라이싱 작업을 수행하는 경우 성능에 영향을 줄 수 있습니다.
  • 인덱스 : 인덱스는 자기 자신을 포함하지 않습니다 ( 0부터 시작 ) 

 

결론

C#8에서 도입된 System.Index와 System.Range로 컬렉션 작업은 이전보다 간단해졌습니다. 이러한 기능은 코드의 장황함을 줄일뿐만 아니라 가독성도 향상시킵니다. 언제나 문법적인 단축 표현은 좋지만 해당 기능의 내부 메커니즘을 잘 이해하여 효과적으로 사용하는 것이 중요합니다."

저작자표시 비영리 변경금지 (새창열림)

'C#' 카테고리의 다른 글

IEnumerable 사용 팁  (0) 2023.09.19
Main 함수란??  (0) 2023.09.15
자료구조 : 선형구조와 비선형구조  (2) 2023.09.04
C# : File  (1) 2023.09.02
C# : Path  (1) 2023.09.01
'C#' 카테고리의 다른 글
  • IEnumerable 사용 팁
  • Main 함수란??
  • 자료구조 : 선형구조와 비선형구조
  • C# : File
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (725)
      • 스마트팜 (0)
      • 상품 추천 (223)
      • MongoDB (4)
      • 하드웨어 (17)
      • 일기장 (4)
      • 파이썬 (130)
        • Basic (41)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • Linux (4)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (51)
        • CSS (10)
      • Git (11)
      • SQL (5)
      • Flutter (10)
        • Tip (1)
      • System (1)
      • BaekJoon (6)
      • Portfolio (2)
      • MacOS (1)
      • 유틸리티 (1)
      • 서비스 (6)
      • 자동화 (3)
      • Hobby (10)
        • 물생활 (10)
        • 식집사 (0)
  • 인기 글

  • 태그

    appdevelopment
    learntocode
    쇼핑몰리뷰
    devlife
    codingtips
    ipcamera
    Python
    스마트스토어리뷰
    C#
    리뷰이관
    programmerlife
    유니티
    programming101
    unity
    상품 리뷰 크롤링
    카페24리뷰이관
    rtsp
    긴유통기한우유
    라떼우유
    파이썬
    리스트
    리뷰관리
    codingcommunity
    셀레니움
    카페24리뷰
    list
    스크립트 실행
    cv2
    믈레코비타멸균우유
    스크립트 실행 순서
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코샵
C# 8의 System.Index 및 System.Range
상단으로

티스토리툴바