C#
최신 C# 기능
C# 11
C# 11 새기능
C# 11: Raw String Literal
C# 11: 문자열 내삽 복수라인
C# 11: u8 접미어
C# 11: Generic Math 지원
C# 11: Generic Attribute
C# 11: 리스트 패턴
C# 11: 파일 로컬 타입
C# 11: required modifier
C# 11: Auto-default struct
C# 11: ReadOnlySpan 패턴 매칭
C# 11: 확장된 nameof 범위
C# 11: nint, nuint
C# 11: ref 필드
C# 11: 소문자 타입명 경고
C# 11: 향상된 method group 변환
C# 10
VS 2022 설치
C# 10 global using
C# 10 File-scoped Namespace
C# 10 향상된 문자열 내삽
C# 10 향상된 람다식 유추
C# 10 struct 기능 향상
C# 10 record struct
C# 10 확장된 속성패턴
C# 10 향상된 명료한 할당
C# 10 Destructor 기능 개선
C# 9.0
C# 9 레코드 타입
C# 9 init accessor
C# 9 최상위 프로그램
C# 9 향상된 패턴 매칭
C# 9 향상된 Target Typing
C# 9 공변 리턴 타입
C# 9 Native Int 타입
C# 8.0
C# 8 디폴트 인터페이스 멤버
C# 8 패턴 매칭
C# 8 Nullable Reference Type
C# 8 인덱싱과 슬라이싱
C# 8 비동기 스트림
C# 8 using 선언
C# 8 널 병합 할당자
C# 8 구조체 읽기 전용 멤버
C# 8 기타 기능들
C# 7.0
C# 7.0 새기능
C# 7.0 패턴 매칭
C# 7.0 튜플
C# 7.0 로컬 함수
C# 7.0 out 파라미터
C# 7.0 리터럴 표현
C# 7.0 Deconstructor
C# 7.0 ref return
C# 7.0 async 리턴타입
C# 7.0 Expression-bodied
C# 7.0 throw expression
C# 6.0
C# 6.0 새기능
C# 6.0 널 조건 연산자
C# 6.0 문자열 내삽
C# 6.0 Dictionary초기자
C# 6.0 nameof 연산자
C# 6.0 using static문
C# 6.0 catch블럭 await
C# 6.0 Exception 필터
C# 6.0 자동 속성 초기자
C# 6.0 읽기전용 자동 속성
C# 6.0 Expression-bodied

C#으로 이해하는 자료구조
C# 프로그래밍 기초 실습 전자책
C# 8 : 인덱싱과 슬라이싱

C# 8.0에서는 시퀀스(sequence) 인덱싱과 슬라이싱을 위해 System.Index 와 System.Range 라는 2개의 구조체를 새로 도입하였고, 시퀀스를 뒤에서부터 인덱싱할 수 있는 ^ prefix 연산자와 시퀀스의 부분 인덱스를 표시할 수 있는 .. 범위 연산자가 새롭게 도입하였다. C# 8.0은 시퀀스의 앞 또는 뒤로부터의 인덱스를 사용할 수 있으며, 시퀀스로부터 일부 범위의 서브 시퀀스를 구하는 슬라이싱 기능을 제공한다. (주: 배열은 연속적인 값들을 갖는 시퀀스 중의 하나이다)



C# 8 : System.Index 와 System.Range

C# 8.0에서 새로 도입된 System.Index 구조체는 시퀀스의 시작 또는 끝으로부터 인덱싱을 표현하는데 사용된다. 끝으로부터의 인덱싱을 위해서는 ^ 연산자를 사용하는데, 마지막 시퀀스 요소의 인덱스를 ^1 로 표시하고, 끝에서 2번째는 ^2, 끝에서 3번째는 ^3 과 같이 표시한다.

System.Range 구조체는 시작 인덱스(Start 속성)와 마지막 인덱스(End 속성)를 함께 가지며 범위를 표현할 때 사용한다. Range에서 특히 주의할 점은 마지막 End 인덱스는 실제 범위의 마지막 다음 요소라는 점이다. 즉, Range 가 1..4 이면 1부터 3까지만이 실제 범위가 된다.


예제

string s = "Hello World";

// System.Index
Index idx = ^2;
ch = s[idx]; // l

// System.Range
Range r1 = 1..4;
string str1 = s[r1]; // ell
Index start = r1.Start;
bool b = start.IsFromEnd; // false
int v1 = start.Value;  // 1
int v2 = r1.End.Value; // 4



C# 8 : 시퀀스 인덱싱과 슬라이싱

System.Index와 ^ 연산자에 기반하여 시퀀스 인덱싱을 사용할 수 있고, System.Range와 .. 범위 연산자를 이용하여 시퀀스를 슬라이스(slice)하는 기능을 사용할 수 있다. 아래 예제는 문자열 시퀀스를 인덱싱하고 슬라이싱하는 여러 방법들을 예시한 것이다.

예제

string s = "Hello World";

// 인덱싱
char ch1 = s[0];  // H
char ch1 = s[1];  // e
char ch2 = s[^1]; // d
char ch2 = s[^2]; // l

// 슬라이싱
var s1 = s[1..4];   // ell
var s2 = s[^5..^2]; // Wor
var s3 = s[..];  // Hello World
var s4 = s[..3]; // Hel
var s5 = s[3..]; // lo World

Range rng = 1..^0;
var s6 = s[rng];  // ello World




본 웹사이트는 광고를 포함하고 있습니다. 광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.




Comment nanenchanga2@*** 10/16/2020 7:50:10 AM
Comment admin@*** 10/16/2020 9:04:23 PM