728x90
C#
조건 연산자(Conditional Operator)
- 조건 연산자는 ?: 은 큭이하게도 피연산자가 세 개이다.
- 조건식 ? 참일 때의 값 : 거짓일 때의 값
null 조건부 연산자
- ?. 은 객체의 멤버에 접근하기 전 해당 객체가 null인지 검사해서 그 결과가 참이면 그 결과로 null을 반환하고, 그렇지 않은 경우 . 뒤에 지정된 멤버를 반환한다.
- ?[] 도 동일한 기능을 수행한다. 배열과 같은 컬렉션 객체의 첨자를 이용한 참조에 사용된다는 점이 다르다.
null 병합 연산자
- ?? 연산자는 두 개의 피연산자를 받아들이고 왼쪽 피연산자가 null인지 평가한다. 평가 결과가 null이 아닌것으로 나타나면 왼쪽 피연산자를 그대로 반환하고, 만약 왼쪽 피연산자가 null인 것으로 평가되면 오른쪽 피연산자를 반환한다.
Switch문과 패턴 매칭
- Switch 레이블의 패턴에는 상수와 형식을 비롯해서 관계, 논리 등등 C#이 지원하는 다양한 패턴을 적용할 수 있다.
케이스 가드(Case Guard)
- 케이스 가드란 switch 문의 case 절의 패턴을 더 구체적으로 만들어주는 추가적인 조건검사라고 할 수 있다.
- 케이스 가드는 case절 뒤에 when 절을 붙여 사용한다.
- when절은 if문처럼 true/false로 결과가 나오는 식을 입력 받는다.
패턴 매칭(Pattern Matching)
- 어떤 식(Expression)이 특정 패턴(Pattern(형태))과 일치하는지 검사한다.
- 패턴 매칭을 이용하면 분기문을 간결하고 읽기 쉬운 코드로 대체할 수 있다.
- 식(Expression)
- 코드에서 단일 결과 값을 만들어 낼 수 있는 연산자와 연산자의 조합이다.
- 리터널과 상수, 변수는 연산자 없이 식이 될 수 있다.
C#이 지원하는 패턴
선언 패턴(Declaration Pattern)
- 주어진 식이 특정 형식(ex)int, string)과 일치하는지 평가한다.
- 주어진 식과 형식이 일치한다면, 선언 패턴(Declaration Pattern)은 식을 해당 형식으로 변환한다.
형식 패턴(Type Pattern)
- 선언 패턴과 거의 같은 방식으로 동작하지만, 변수 생성없이 형식 일치 여부만 테스트한다.
상수 패턴(Constant Pattern)
- 식이 특정 상수와 일치하는지 검사한다.
- 정수 리터널과 문자열 리터럴 뿐 아니라 null과 enum등 모든 상수와 매칭 할 수 있다.
프로퍼티 패턴(Property Pattern)
- 식의 속성이나 필드가 패턴과 일치하는지 검사한다.
- 입력된 식이 int, double 같은 기본 데이터 형식이 아닌 경우 특히 유용하다.
관계 패턴(Relational Pattern)
- 관계 연산자를 이용해서 입력 받은 식을 상수와 비교한다.
논리 패턴(Logical Pattern)
- 패턴과 패턴을 패턴 논리 연산자를 조합해서 하나의 논리 패턴으로 만들 수 있다.
괄호 패턴(Parenthesized Pattern)
- 소괄호로 패턴을 감싸, 논리 패턴으로 여러 패턴을 조합하여 이를 새로운 패턴으로 만드는 경우 사용한다.
위치 패턴(Position Pattern)
- 식의 결과를 분해(Peconstruct) 하고, 분해된 값들이 내장된 복수의 패턴과 일치하는지 검사한다.
- 위치 패턴 안에 내장되는 패턴에는 형식 패턴, 상수 패턴등 어떤 패턴이든 올 수 있다.
- 분해된 값들과 내장된 패턴의 개수, 순서가 일치해야 한다.
Var 패턴
- null을 포함한 모든 식의 패턴 매칭을 성공시키고, 그 식의 결과를 변수에 할당한다.
- 어떤 식의 결과를 임시 변수에 할당한 뒤 추가적인 연산을 수행하고자 할 때 유용하게 사용할 수 있다.
무시 패턴(Discard Pattern)
- var 패턴과 같이 모든 식과의 패턴 일치 검사를 성공시킨다.
- var 패턴과는 다르게 is식에서는 사용할 수 없고, switch식에서만 사용할 수 있다.
- ‘모든 식’을 매칭할 수 있기 때문에 switch문의 default 케이스와 비슷한 용도로 사용하면 된다.
- 무시 패턴은 _ 기호를 이용한다.
목록 패턴(List Pattern)
- 배열이나 리스트가 패턴의 시퀀스가 일치하는지 검사한다.
- 패턴의 시퀀스는 대괄호 [ 와 ] 사이에 패턴의 목록을 입력해서 만든다.
728x90
'언어 > C#' 카테고리의 다른 글
리플렉션 (0) | 2024.07.31 |
---|---|
C#5. 인터페이스, 추상 클래스, 프로퍼티, 컬렉션 (1) | 2024.07.18 |
C#4. 메소드, 클래스, 접근한정자, 상속 (0) | 2024.07.17 |
C#. 2 (0) | 2024.07.15 |
C#. 1 (0) | 2024.07.11 |