Type

C#/Language

C# - Language - Unmanaged types

Introduction 다음 형식은 비관리형 형식이다. 정수 부동 소수점 논리 열거형 구조체 : 비관리 형식의 필드만 보유하는 경우 포인터 구조체 구조체의 경우 형태에 따라 관리형, 비관리형이 될 수 있다. 다음 구조체는 관리형이다. public struct Foo { public int Bar; public string Baz; } 관리형 형식인지 파악하기 위해 CompilerServices의 RuntimeHelpers를 이용할 수 있다. using System.Runtime.CompilerServices; static void Main(string[] args) { Console.WriteLine(RuntimeHelpers.IsReferenceOrContainsReferences()); } /* ou..

C#/Language

C# - Language - Type, declaration patterns

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 { } } // ..

C#/Language

C# - Language - Partial keyword (Type, method)

Introduction partial 키워드는 정의를 나눌 수 있게 해주며 다음 형식 또는 멤버에 사용 가능하다. 클래스 구조체 인터페이스 레코드 메서드 partial을 이용하여 형식을 정의하는 경우는 다음과 같다. 소스 생성기 (Community toolkit, Visual studio designer, ...) 를 사용하는 경우 형식을 개별 파일에 분산하여 정의하는 경우 partial 키워드는 용도에 따라 코드 파일을 분리할 수 있는 이점을 제공한다. 그러나 키워드의 편의성으로 인해 과도하게 형식이 커질 수 있다. 해당 부분은 코드 작성 시 주의해야 한다. partial로 선언된 형식은 하나의 어셈블리 내에서 정의되어야 하며, 모든 선언이 동일하게 partial 키워드를 갖고 있어야 한다. parti..

C#/Language

C# - Language - Generic type constraints (where, default, unmanaged, new)

where where는 제네릭 정의에 대해 형식 제약 조건을 지정하게 해준다. 형식 제약 조건에는 인터페이스, 클래스 및 구조체 형식 등을 설정할 수 있다. 제네릭 정의에는 여러 제약 조건을 지정할 수 있으며 각각의 제약 조건에 where를 적용할 수 있다. Example // T에 where 적용 public class Foo where T : ICollection { } // 참조 형식 public class Bar where T : class // 값 형식 public class Baz where T : struct public class Base { } public class Derived : Base { } public class Other { } // Base 또는 Base에서 파생된 clas..

C#/Language

C# - Language - 클래스 (class)

1. Introduction class는 필드, 메서드, 속성, 이벤트 등의 멤버가 포함될 수 있는 참조 형식이다. class는 동명의 키워드를 사용하여 정의하며, 상속을 지원한다. class는 하나의 클래스를 상속 받을 수 있고, 하나 또는 여럿의 인터페이스를 구현할 수 있다. 2. 포함 가능한 멤버 class에는 다음 멤버를 사용할 수 있다. 멤버 내용 생성자 class 생성자 초기화를 포함한 작업을 수행 상수 선언과 동시에 초기화 필드 class 또는 struct에서 선언되는 변수 소멸자 일부 dispose 불가 상황에서는 호출 안될 수 있음 메서드 모든 명령은 메서드 컨텍스트에서 실행 속성 읽기 / 쓰기 모드 및 한정자 설정 가능 데이터 멤버처럼 쓰지만 메서드이다 인덱서 사용자 정의 형식을 배열처..

C#/Language

C# - Language - 레코드 형식 (Record)

1. Introduction Record 형식은 C# 9 (.NET 5) 에서 소개된 Immutable reference type을 목적으로 설계된 형식이다. Record 형식은 기본적으로 class 형식과 비슷하다. 형식 사용 방법 또한 상당히 유사하다. 다른 점으로는 immutable 지원을 위한 기능이 추가되어 최소한의 코드로 immutable reference type을 구현할 수 있다. C# 10 (.NET 6) 에서 record struct가 소개되면서 값 형식의 사용이 가능해지고, 명시적으로 record class 선언을 할 수 있게 되었다. 2. Record의 장점 Record 형식은 다음과 같은 장점을 가진다. Immutable reference type Constructor & Deco..

Peponi_
'Type' 태그의 글 목록