Introduction 캐스트 식은 (T)expression으로 나타내며, 명시적으로 expression을 T로 형식 변환한다. 명시적 변환이 불가한 경우 컴파일 타임 오류가 발생한다. 런타임에 명시적 변환에 실패하는 경우 System.InvalidCastException, System.OverflowException 등이 발생할 수 있다. Example 다음은 캐스트 식을 사용하는 사례를 보여준다. long foo = 123; Console.WriteLine((ushort)foo); List bar = [1, 2, 3]; IEnumerable baz = (IEnumerable)bar; Console.WriteLine(string.Join(", ", baz)); /* output: 123 1, 2, 3 ..
Introduction as 연산자는 식의 결과를 지정된 형식 (참조 또는 nullable 값 형식) 으로 변환한다. 변환할 수 없는 경우 null을 반환하며, 예외를 출력하지 않는다. as 식은 아래와 같이 표현한다. expression as type expression은 값을 반환하는 식, type은 형식 또는 형식 매개 변수의 이름이다. 위 식은 아래 식의 축약형이다. expression is type ? (type)(expression) : (type)null as 식은 아래 항목 중 하나를 만족하면 변환된 객체를 반환한다. T의 파생 형식 T 인터페이스 구현 T 형식으로 boxing 또는 unboxing 가능한 경우 as 연산자는 숫자 변환에 대해서는 고려하지 않으며 사용자 정의 변환을 수행할 ..
Introduction is 연산자는 주어진 식의 결과를 이용하여 다음 작업을 수행한다. 형식 일치 여부 확인 패턴 일치 여부 확인 is 식은 아래와 같이 표현한다. expression is type // 1 expression is pattern // 2 expression은 값을 반환하는 식, type은 형식 또는 형식 매개 변수의 이름이다. 여기서 type은 무명 메서드 또는 람다 식으로 표현할 수 없다. expression은 값을 반환하는 식, pattern은 일치 여부를 확인할 패턴이다. 형식 일치 여부 확인 is 연산자를 이용하여 형식 일치 여부를 확인할 수 있다. 주어진 식이 null이 아닌 경우, is 연산자는 다음 조건 중 하나를 만족하면 true를 반환한다. T or T? (HasVal..
Introduction 다음 C# 식과 문은 패턴을 지원한다. is 식 switch 식 switch 문 여기서는 C# 11부터 지원되는 목록 패턴에 대해 설명한다. Example 목록 패턴은 배열, 컬렉션에 대해 특정 시퀀스와 매칭하는 기능을 제공한다. List ints = [-1, 2, 3]; // 기본 사용 Console.WriteLine(ints switch { [-1, 2, 3] => true, _ => false }); /* output: True */ // 패턴 중첩 Console.WriteLine(ints switch { [ mid, _ => false }); /* output: 2 */ 목록 패턴은 범위 연산자 (..)를 통한 부분 매칭을 지원한다..
Introduction 다음 C# 식과 문은 패턴을 지원한다. is 식 switch 식 switch 문 여기서는 다음 패턴을 설명한다. 무시 (_) 패턴 : null을 포함한 모든 식을 매칭한다. var 패턴 : null을 포함한 모든 식을 매칭하고 지역 변수에 할당한다. _ 패턴 _ 패턴은 switch 식에만 사용이 가능하고, switch 문의 default와 같은 기능을 한다. switch 식에서 _을 사용하지 않고 모든 경우를 커버하지 못하면 컴파일러는 경고를 생성한다. (CS8509) int? foo = null; Console.WriteLine(foo switch { 1 => 1, 2 => 2, _ => "Not recognized" }); /* output: Not recognized */ v..
Introduction 다음 C# 식과 문은 패턴을 지원한다. is 식 switch 식 switch 문 여기서는 다음 패턴을 설명한다. 속성 패턴 : 각 패턴에 대해 속성, 필드를 매칭 위치 패턴 : 식을 분해하고 패턴 매칭 속성 패턴 속성 패턴은 중괄호 { } 를 이용하여 매칭할 속성을 지정한다. public record Foo(int A, int B); var foo = new Foo(1, 2); Console.WriteLine(foo switch { { A: "A "B 0, B: > 0 } => "A > 0, B > 0", _ => "Not recognized" }); /* output: A > 0, B > 0 */ 속성 패..
Introduction 다음 C# 식과 문은 패턴을 지원한다. is 식 switch 식 switch 문 여기서는 각 패턴을 조합할 수 있는 논리 패턴을 설명한다. not (부정 패턴) not 패턴은 지정된 식과 일치하지 않는 경우 true를 반환한다. int? foo = 7; if (foo is not int) Console.WriteLine("foo is not int"); else if (foo is int) Console.WriteLine("foo is int"); /* output: foo is int */ and (결합 패턴) and 패턴은 지정된 모든 식이 일치하는 경우 true를 반환한다. int foo = 7; Console.WriteLine(foo switch { "foo <..
Introduction 다음 C# 식과 문은 패턴을 지원한다. is 식 switch 식 switch 문 여기서는 식 결과가 지정된 상수와 비교할 수 있는 관계형 패턴을 설명한다. 관계형 패턴에는 다음 형식을 사용할 수 있다. 정수, 부동 소수점 char enum Example // is 식 int foo = 7; if (foo is < 0) Console.WriteLine("foo < 0"); else if (foo is < 5) Console.WriteLine("foo < 5"); else if (foo is < 10) Console.WriteLine("foo < 10"); /* output: foo < 10 */ // switch 식 int foo = 7; Console.WriteLine(foo sw..
Introduction 다음 C# 식과 문은 패턴을 지원한다. is 식 switch 식 switch 문 여기서는 식 결과가 지정된 상수와 같은지 확인할 수 있는 상수 패턴을 설명한다. 상수 패턴에는 상수 형식으로 변환할 수 있는 형식을 사용할 수 있다. 정수, 부동 소수점 char string bool enum const 필드 또는 로컬 변수의 이름 Span, ReadOnlySpan (C# 11) null Example // is 식 int foo = 7; if (foo is 7) Console.WriteLine("foo is 7"); else Console.WriteLine("foo is not 7"); /* output: foo is 7 */ // switch 식 int foo = 7; Console..
Introduction 다음 C# 식과 문은 패턴을 지원한다. is 식 switch 식 switch 문 여기서는 다음 패턴을 설명한다. 형식 패턴 : 형식 확인 선언 패턴 : 형식 확인 및 성공 시 결과를 변수에 할당 특정 객체가 T 형식임을 확인하는 경우, 아래 형식 조건 중 하나를 만족하면 true가 반환된다. T or T? T의 파생 형식 T의 인터페이스 구현 T 형식으로 boxing 또는 unboxing 가능 형식 패턴 식의 형식을 확인하려는 경우 다음과 같이 형식 패턴을 사용할 수 있다. namespace TypePattern { public interface Common { } public class Foo : Common { } public class Bar : Common { } } // ..
Introduction 인덱스 (^), 범위 (..) 연산자는 Count, Length와 같은 int getter 프로퍼티를 가진 형식에 사용할 수 있다. 컬렉션 식 또한 여기에 포함된다. ^ 연산자는 요소 위치를 거꾸로 표현한다. ^n으로 위치를 지정한다. n의 자리에 시퀀스 길이를 넣는 경우 첫번째 요소, ^1은 마지막 요소이다. .. 연산자는 요소의 범위를 나타낸다. 표현식은 a..b이며 [a, b)를 의미한다. ^ 연산자와 같이 사용할 수 있다. 아래는 ^, .. 연산자의 사용법을 보여준다. ^ 연산자 string foo = "Hello, World!"; Console.WriteLine(foo[^2]); // d int[] bar = [1, 2, 3, 4, 5]; Console.WriteLine(..
Introduction 다음 멤버는 괄호 ()를 사용하여 호출할 수 있다. 생성자 메서드 대리자 Example // Constructor var foo = new List(); // Method Console.WriteLine("Hello, World!"); // Delegate delegate void ConsoleWriter(string message); static void Main(string[] args) { ConsoleWriter writer = new(Write); writer("Hello, World!"); } static void Write(string message) => Console.WriteLine(message); 참조 자료 멤버 액세스 및 null 조건부 연산자 및 식 - 호..