본문 바로가기
반응형

c#129

C# 무명 메서드(Anonymous Method) 무명 메서드(Anonymous method) C# 2.0에서부터 메서드를 미리 정의하지 않아도 되는 메서드명이 없는 무명 메서드(혹은 익명 메서드, Anonymous Method)를 지원하게 되었다. 만약 어떤 메서드가 일회용으로 단순한 문장들로 구성되어 있다면, 굳이 별도의 메서드를 정의하지 않아도 되는 것이다. 무명 메서드를 만들기 위해서는 delegate 키워드와 함께 아래와 같이 파라미터와 실행 문장 블록을 적으면 된다. delegate 뒤의 파라미터는 해당 메서드 원형(prototype)에 맞는 동일한 파라미터 타입이어야 하며, 실행 문장블록에는 여러 문장들을 쓸 수 있다. 무명 메서드는 외관상 인라인 메서드(inline method) 형식을 띠며, 무명 메서드 자체를 delegate 타입의 변.. 2023. 8. 2.
C# Queue 기본 생성자로 초기화 하기 Queue를 List랑 동일하게 초기화 시키고 싶었다. 예상과는 다르게 에러가 발생. List를 초기화하는 방식처럼 Queue도 초기화 될줄 알았는데 당연하게 될줄 알았던 부분이 작동하지 않았다. List L1 = new List { 1, 2, 3 }; Queue Q1 = new Queue { 1, 2, 3 }; // error 발생 컬렉션 이니셜라이저(Collection initializers) 컬렉션 이니셜라이저를 사용하면 컬렉션 타입을 초기화할 때 하나 또는 그 이상의 요소 이니셜라이저를 지정해서 초기화 할 수 있다. 단 IEnumerable을 구현하고 적절한 시그니처가 있는 Add를 인스턴스 메서드 또는 확장 메서드로 포함해야 한다. 요소 이니셜라이저는 단순한 값, 식 또는 개체 이니셜라이저일 수.. 2023. 7. 26.
C# 표현식 본체 멤버(Expression-bodied member) 표현식 본체 멤버(Expression-bodied member)C#의 속성이나 메서드는 보통 여러 문장(statement)들로 구성된 블록을 실행하게 된다. 하지만 속성이나 메서드의 Body 블록이 간단한 경우, 문 블럭(Statement Block)을 사용하는 대신 간단한 함수식(Expression)을 사용할 수 있는데, 이를 표현식 본체 멤버(Expression-bodied member)라고 부른다. 이는 기존의 람다식과 유사한 것으로 속성이나 메서드 Body를 간략한 람다식처럼 표현한 것이다. 기본 형태[반환타입] [멤버이름] => [표현식];메서드 속성(읽기 전용) 생성자 소멸자 인덱서 연산자 오버로딩위에 항목들을 람다식(Lambda Expression)의 형태(=>)를 사용하여 정의를 단순화 할.. 2023. 6. 28.
C# 익명 타입 (Anonymous Type) 익명 타입(Anonymous Type)이란? C#에서 어떤 클래스를 사용하기 위해서는 일반적으로 먼저 클래스를 정의한 후 사용한다. 하지만 C# 3.0부터 클래스를 미리 정의하지 않고 사용할 수 있게 하는 익명 타입(Anonymous Type)을 지원하게 되었다. 익명 타입은 new { ... }와 같은 형식을 사용하며, new 블록 안에 속성 = 값 할당을 하고, 각 속성/값은 콤마로 분리한다. 익명 타입은 읽기 전용이므로 속성값을 갱신할 수 없다. C# 키워드 var는 컴파일러가 타입을 추론해서 찾아내도록 할 때 사용되는데, 익명 타입 객체를 변수에 할당할 때는 특별히 타입명이 없으므로 var를 사용한다. 컴파일러는 익명 타입에 대해 내부적으로 임의의 클래스를 생성하여 사용하게 된다. // 익명 타입.. 2023. 6. 19.
C# Linq - Enumerable.Repeat() Enumerable.Repeat(TResult, Int32) 메서드 public static System.Collections.Generic.IEnumerable Repeat (TResult element, int count); 매개변수 element TResult 반복할 값 count int32 값을 반복할 횟수 특정 타입의 값을 특정 횟수 반복하고 싶을때 사용한다. 정리하자면 element를 count만큼 반복 이를 보통 배열이나 리스트로 변환해서 사용한다. 예제 코드 IEnumerable strings = Enumerable.Repeat("I like programming.", 15); foreach (String str in strings) { Console.WriteLine(str); } /* .. 2023. 6. 13.
계속 실행되어야 하는 작업을 위한 BackgroundService in .NET Core IHostedService .NET Core 2.1에서 추가된 IHostedService은 개발자에게 관리되는 실행시간에서 백그라운드 서비스들을 실행할 수 있도록 해준다. 이 기능은 최소한의 구현만을 사용이 가능합니다. public interface IHostedService { Task StartAsync(CancellationToken cancellationToken); Task StopAsync(CancellationToken cancellationToken); } .NET Core의 의존성 주입을 해줍니다. 간단하게 구현이 가능하다! var hostBuilder = new HostBuilder() .ConfigureServices(services => services.AddHostedService.. 2023. 6. 5.