Expression

C#/Language

C# - Language - stackalloc expression

Introduction stackalloc 식은 스택에 메모리 블록을 할당한다. 할당된 메모리 블록은 메서드가 반환될 때 자동으로 해제되며 명시적으로 해제가 불가능하다. 할당된 메모리 블록은 GC의 대상이 아니며 fixed 문을 사용하여 피닝하지 않아도 된다. Example stackalloc 식은 다음 형식 중 하나에 할당할 수 있다. System.Span : T는 비관리형 형식 static void Main(string[] args) { Span foo = stackalloc int[3] { 1, 2, 3 }; Span bar = stackalloc int[] { 1, 2, 3 }; Console.WriteLine(foo[1]); Console.WriteLine(bar[1]); } /* output:..

C#/Language

C# - Language - Cast expression

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 ..

C#/Language

C# - Language - Invocation expression ( () )

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 조건부 연산자 및 식 - 호..

C#/Language

C# - Language - Member access expression (.)

Introduction . 기호는 네임스페이스 및 형식 멤버에 액세스할 때 사용한다. Using 지시문 using 지시문을 사용할 때 .을 사용하여 중첩된 네임스페이스 또는 형식에 접근할 수 있다. using System.ComponentModel; using static System.Console; 정규화된 형식 .을 사용하여 정규화된 이름을 만들고 네임스페이스 내의 형식에 액세스할 수 있다. using 지시문을 사용하면 정규화를 하지 않아도 된다. System.Collections.Generic.List ints = [1, 2, 3, 4, 5]; System.Console.WriteLine(string.Join(", ", ints)); /* output: 1, 2, 3, 4, 5 */ 멤버 접근 .을..

C#/Language

C# - Language - Collection expression

Introduction C# 12부터, 컬렉션 및 배열은 컬렉션 식 ([]) 을 이용하여 초기화가 가능하다. 본문에서는 List를 활용하여 예시를 작성한다. 다음 예시와 같이, 컬렉션 식을 사용하여 코드를 간략하게 구성할 수 있다. // C# 11 List foo = new() { 1, 2, 3 }; // C# 12 List bar = [1, 2, 3]; Example 컬렉션 식은 다양한 형태로 사용 가능하다. internal class Program { // 필드 private List _field = [1, 2, 3]; // 프로퍼티 private List _property => [1, 2, 3]; static void Main(string[] args) { // 변수 List variable = [..

C#/Language

C# - Language - Switch expression

Introduction switch 식은 패턴 매칭을 기반으로 식을 계산한다. switch 문은 switch 문을 참조한다. switch 식은 다음과 같이 구성한다. x switch { Condition1 => Value1, Condition2 => Value2 }; x : 입력 값 스위치 암 (arm) : ,로 구분 된 각각의 식 ConditionX : 조건 (패턴 또는 케이스 가드) ValueX : 반환 식 switch 식의 결과는 조건이 true로 반환되는 첫번째 arm 반환 식의 값이다. 상위 arm으로 인해 하위 arm의 값 출력이 불가한 경우 컴파일러에서 오류가 발생한다. switch 식에 사용 가능한 패턴은 패턴 일치 - 패턴의 is 및 switch 식, 연산자 and, or 및 not을 참..

C#/Language

C# - Language - with expression

Introduction with 식은 형식의 일부를 수정한 복사를 가능하게 한다. public record Foo(bool X, int Y); public static void Main() { var foo = new Foo(true, 100); var bar = foo with { Y = 50 }; Console.WriteLine(foo); Console.WriteLine(bar); } /* output: Foo { X = True, Y = 100 } Foo { X = True, Y = 50 } */ C# 10부터는 구조체, 익명 형식 또한 with 식을 사용할 수 있다. public struct Foo { public bool X; public int Y; public Foo(bool x, int y..

C#/Language

C# - Language - default expression

Introduction 기본값 식은 주어진 형식의 기본값을 생성한다. default 키워드를 이용하여 default 연산자, default 리터럴을 호출할 수 있다. default 연산자 default 연산자의 인수는 형식 또는 형식 매개 변수가 되어야 한다. Console.WriteLine(default(bool)); Console.WriteLine(default(int)); WriteDefaultValue(); WriteDefaultValue(); void WriteDefaultValue() => Console.WriteLine(default(T)); /* output: False 0 False 0 */ default 리터럴 컴파일러가 형식을 유추할 수 있는 경우 default 키워드를 사용하여 기본..

C#/Language

C# - Language - nameof expression

Introduction nameof 식은 변수, 형식, 멤버의 이름을 문자열 상수로 생성한다. 컴파일 타임에 계산되어 상수로 변환된다. 형식 또는 네임스페이스가 피연산자에 포함되더라도 생성된 이름은 정규화되지 않는다. 피연산자가 축자 식별자인 경우 @ 문자는 이름에서 제외된다. Example static void Main(string[] args) { Console.WriteLine(nameof(Main)); Console.WriteLine(nameof(System)); Console.WriteLine(nameof(System.Console)); // 정규화되지 않고 Console만 출력 Console.WriteLine(nameof(System.Drawing.Point.X)); // 정규화되지 않고 X만..

Peponi_
'Expression' 태그의 글 목록