liminfo

C# Reference

C# 프로그래밍 레퍼런스

40개 결과

C# Reference 소개

C# 레퍼런스는 현대적인 C# 개발에 필요한 문법 전반을 포괄하는 검색 가능한 치트 시트입니다. 변수 선언, 문자열 보간, nullable 타입 같은 기초부터 클래스 상속, 추상 클래스, record, struct 같은 객체지향 기능, 그리고 LINQ 쿼리, async/await 패턴, 델리게이트, 람다 표현식, C# 8~11 패턴매칭까지 다룹니다. switch 표현식 사용법, IAsyncEnumerable 스트림 작성, 프로퍼티 패턴 적용 방법 등 모든 항목에 실제로 실행 가능한 코드 예제가 포함되어 있습니다.

이 레퍼런스는 .NET 개발자, ASP.NET 풀스택 엔지니어, Unity/Blazor/MAUI 개발자에게 특히 유용합니다. 기본문법, 클래스, 인터페이스, 제네릭, LINQ, 비동기, 델리게이트, 패턴매칭 등 8개 카테고리로 구성되어 있어 필요한 주제로 바로 이동할 수 있습니다. C# 9의 record와 init-only 프로퍼티, C# 8의 기본 인터페이스 메서드, C# 11의 리스트 패턴 등 최신 C# 기능도 상세히 다룹니다.

각 항목은 문법/키워드, 간결한 설명, 실제 활용을 보여주는 코드 예제로 구성됩니다. LINQ 항목은 쿼리 구문과 메서드 구문 모두를 다루며, Sum/Average/Max 집계, GroupBy 그룹화, Join 조인 예제를 포함합니다. 비동기 섹션에서는 Task, Task.WhenAll, CancellationToken, IAsyncEnumerable을 다루고, 델리게이트 섹션에서는 Action/Func, 커스텀 델리게이트, 이벤트, 람다 표현식을 통해 C#의 함수형 패턴을 완벽하게 이해할 수 있습니다.

주요 기능

  • 8개 카테고리: 기본문법, 클래스, 인터페이스, 제네릭, LINQ, 비동기, 델리게이트, 패턴매칭
  • LINQ 쿼리 구문과 메서드 구문 모두 포함 — 집계, GroupBy, Join 예제 제공
  • Task, Task.WhenAll, CancellationToken, IAsyncEnumerable (C# 8) 비동기 패턴 완벽 정리
  • record (C# 9), init-only, switch 표현식 (C# 8), 리스트 패턴 (C# 11) 등 최신 문법 수록
  • 상속, 추상 클래스, 기본 구현 인터페이스, struct, record 등 클래스 계층 기능 전체 커버
  • where T : class, IComparable<T>, new() 등 제네릭 타입 제약 조건 예제 포함
  • 델리게이트, 이벤트, Action/Func 내장 타입, 람다 표현식 실제 예제 수록
  • 빠른 검색과 카테고리 필터로 3초 안에 원하는 문법 찾기

자주 묻는 질문

이 레퍼런스는 어떤 C# 버전을 다루나요?

C# 6부터 C# 11까지의 문법을 다룹니다. 문자열 보간, nullable 타입, LINQ, async/await, record (C# 9), 기본 인터페이스 메서드 (C# 8), switch 표현식 (C# 8), 리스트 패턴 (C# 11) 등 현대 .NET 개발에서 가장 많이 쓰이는 기능들을 중심으로 구성했습니다.

var와 명시적 타입 선언의 차이는 무엇인가요?

C#에서 var는 타입 추론을 사용합니다. 컴파일러가 할당된 값을 기반으로 컴파일 타임에 타입을 결정합니다. var name = "Kim"은 string name = "Kim"과 완전히 동일합니다. 타입은 여전히 강타입으로 유지됩니다. const는 컴파일 타임 상수이고, readonly는 생성자에서만 할당 가능한 런타임 불변 필드입니다.

C#에서 LINQ는 어떻게 작동하나요?

LINQ는 쿼리 구문(SQL과 유사)과 메서드 구문(람다 체이닝) 두 가지 방식으로 컬렉션을 쿼리할 수 있습니다. from n in numbers where n % 2 == 0 select n과 numbers.Where(n => n % 2 == 0)은 동일한 결과를 냅니다. 필터링(Where), 정렬(OrderBy), 변환(Select), 집계(Sum, Average, Count, Max), 그룹화(GroupBy), 조인(Join)을 모두 지원합니다.

C# 9의 record 타입이란 무엇인가요?

record는 기본적으로 값 기반 동등성을 사용하는 참조 타입입니다. 같은 데이터를 가진 두 record는 동등하게 취급됩니다. 기본적으로 불변이며, with 표현식을 통해 하나의 필드만 변경된 복사본을 만들 수 있습니다(비파괴적 변이). DTO, 도메인 값 객체, 구조적 동등성이 필요한 데이터 컨테이너에 적합합니다.

async/await와 CancellationToken은 어떻게 함께 사용하나요?

CancellationToken은 협력적 취소 메커니즘을 제공합니다. CancellationTokenSource를 생성하고 Token을 비동기 메서드에 전달합니다. 메서드는 IsCancellationRequested를 주기적으로 확인하거나 Task.Delay(ms, token)처럼 취소 가능한 대기에 토큰을 전달합니다. Cancel()을 호출하면 다음 await 지점에서 OperationCanceledException이 발생하여 작업이 깔끔하게 중단됩니다.

abstract class와 interface의 차이는 무엇인가요?

추상 클래스는 필드, 생성자, 추상 및 구체 메서드를 모두 가질 수 있습니다. 단일 상속만 가능합니다. 인터페이스는 기본적으로 상태가 없는 계약을 정의하지만, C# 8부터 기본 구현을 가질 수 있습니다. 여러 인터페이스를 구현할 수 있습니다. 공유 상태나 생성자가 필요하면 추상 클래스를, 관련 없는 클래스들이 공통 기능을 선언해야 할 때는 인터페이스를 사용하세요.

확장 메서드는 언제 사용하나요?

확장 메서드는 기존 타입을 수정하거나 상속하지 않고 새 메서드를 추가할 수 있습니다. static 클래스의 static 메서드로 정의하며, 첫 번째 매개변수에 this 키워드를 사용합니다. 예를 들어 public static string Reverse(this string s)는 모든 string에 Reverse() 메서드를 추가합니다. 수정할 수 없는 타입(내장 타입, 서드파티 클래스)에 유틸리티 메서드를 추가할 때 유용하지만, 과도하게 사용하면 코드 추적이 어려워질 수 있습니다.

제네릭 제약 조건(where T : ...)은 어떻게 사용하나요?

제네릭 제약 조건은 타입 인수로 사용할 수 있는 타입을 제한합니다. 주요 제약 조건으로는 where T : class (참조 타입), where T : struct (값 타입), where T : new() (매개변수 없는 생성자 필요), where T : IComparable<T> (IComparable 구현 필요), where T : 기본클래스 등이 있습니다. 여러 제약 조건을 조합할 수 있으며, 제약 조건을 통해 타입 특화 연산이 가능해지고 타입 안전성이 높아집니다.