728x90

언어 104

SortedDictionary<TKey, TValue>

SortedDictionary.NET에서 제공하는 제네릭 컬렉션 클래스 중 하나로, 키와 값의 쌍을 저장하고 키를 기준으로 자동으로 정렬하는 사전(Dictionary)이다.이 클래스는 System.Collections.Generic 네임스페이스에 포함되어 있으며, 키가 정렬 순서로 저장되어야 하는 시나리오에서 유용하다.주요 특징키의 정렬키를 기준으로 자동으로 정렬한다. 기본적으로 키는 기본 제공된 비교자(기본적으로 IComparable 구현 또는 지정된 IComparer)를 사용하여 정렬된다.키와 값의 쌍다른 사전 컬렉션과 마찬가지로 키와 값의 쌍을 저장한다. 각 키는 고유하며, 동일한 키를 두 번 저장할 수 없다.빠른 검색키에 대한 검색, 추가, 삭제가 모두 로그(log) 시간 내에 수행된다. 이는 내..

언어/C# 2024.08.07

yield return

yield returnC#에서 이터레이터 메서드를 구현할 때 사용되는 키워드이다.이터레이터 메서드는 IEnumerable 또는 IEnumerable를 구현하여 호출자가 요소를 순차적으로 반복(iterate)할 수 있도록 한다.yield return은 메서드의 실행을 멈추고 호출자에게 현재 값을 반환한 후, 다음 호출 시 해당 위치에서 실행을 재개할 수 있게 한다.주요 기능순차적 데이터 반환yield return을 사용하여 데이터를 하나씩 반환할 수 있다. 호출자는 이터레이터를 사용하여 데이터 시퀀스를 순차적으로 요청할 수 있다.상태 저장yield return은 메서드의 실행 상태를 저장한다. 이후 호출 시 저장된 상태에서 실행을 재개한다.지연된 실행이터레이터는 실제로 반복자에 의해 요청되기 전까지 실행되..

언어/C# 2024.08.07

델리게이트(Delegate)

델리게이트(Delegate)메서드를 참조할 수 있는 형식 안전한 개체이다.델리게이트는 메서드를 변수처럼 저장할 수 있게 해주며, 메서드에 대한 참조를 호출 시점까지 연기하여 동적으로 메서드를 호출할 수 있는 유연성을 제공한다. 이는 콜백 함수, 이벤트 처리기 및 기타 다양한 패턴에서 유용하게 사용할 수 있다.델리게이트의 주요 특징형식 안정성델리게이트는 특정 메서드 시그니처(반환 타입과 매개변수 목록)를 정의한다.델리게이트가 참조할 수 있는 메서드는 반드시 이 시그니처와 일치해야 한다.다중 캐스팅델리게이트는 여러 메서드를 호출할 수 있다.델리게이트 인스턴스에 여러 메서드를 추가하면, 델리게이트를 호출할 때 해당 메서드들이 차례로 호출된다.익명 메서드 및 람다식 지원델리게이트는 익명 메서드 또는 람다식과 함..

언어/C# 2024.08.07

ConcurrentDictionary.AddOrUpdate(value1, value2, (k,v) ⇒ value2) 메서드

ConcurrentDictionary.AddOrUpdate(value1, value2, (k,v) ⇒ value2) 메서드AddOrUpdate는 키가 존재하지 않으면 새 항목을 추가하고, 이미 존재하면 값을 업데이트하는 메서드이다.value1추가하려는 키이다value2키가 존재하지 않을 때 추가될 새로운 값이다.(k, v) ⇒ value2키가 이미 존재할 때 실행되는 람다 함수이다.동작만약 value1 키가 딕셔너리에 없다면, (value1, value2) 쌍을 새로 추가한다.만약 value1 키가 이미 존재한다면, 해당 키의 값을 value2로 업데이트 한다.

언어/C# 2024.08.06

ConcurrentDictionary.TryAdd 메서드

ConcurrentDictionary.TryAdd 메서드새로운 키-값 쌍을 추가할 때 사용한다.public bool TryAdd(TKey key, TValue value);key: 추가할 항목의 키이다.value: 추가할 항목의 값이다.반환값: bool 타입의 값으로, 추가 작업이 성공했는지 여부를 나타낸다.동작 방식TryAdd 메서드는 ConcurrentDictionary에 새로운 항목을 추가하려고 할 때, 해당 키가 이미 존재하는지 검사하고, 존재하지 않는 경우에만 항목을 추가한다.키가 존재하지 않는 경우키-값 쌍이 사전에 추가된다.TryAdd 메서드는 true를 반환한다.키가 이미 존재하는 경우기존 항목이 변경되지 않는다.TryAdd 메서드는 false를 반환한다.주요 특징 및 주의점스레드 안정성C..

언어/C# 2024.08.06

Google.Protobuf IDeepClonealbe<T>

Google.Protobuf IDeepClonealbe프로토콜 버퍼스(Protocol Buffers, Protobuf) 메시지 객체를 깊은 복사(deep copy)하는 기능을 제공하는 인터페이스이다. 이는 Protobuf를 사용하여 정의된 메시지 타입에서 주로 사용된다.Protobuf는 구글에서 개발한 언어 중립적인 데이터 직렬화 라이브러리이다.사용 목적깊은 복사깊은 복사는 객체의 복사본을 만들 때, 원래 객체의 모든 필드 값을 복사하고 그 필드들이 참조하는 객체들 역시 모두 복사하여, 원래 객체와 독립적인 새로운 객체를 만드는 작업을 말한다. 이는 얕은 복사(참조만 복사)와 대비된다.불변성 유지Protobuf 메시지 객체는 불변성을 유지하는 것이 일반적이다. 원본 객체의 상태를 변경하지 않고, 수정된 ..

언어/C# 2024.08.06

Dictionary<TKey, TValue>

Dictionary고유한 키를 기반으로 값을 저장하는 컬렉션이다.특징고유한 키Dictionary에서 각 키는 고유해야 한다. 동일한 키를 여러 번 추가하려고 하면 ArgumentException 예외가 발생한다.값 덮어쓰기이미 존재하는 키에 대해 값을 설정하면, 해당 키의 기존 값이 새로운 값으로 대체된다.이는 myDictionary[1] = “Updated First”; 와 같은 방식으로 수행할 수 있다.예외 처리Add 메서드를 사용하여 중복된 키를 추가하려고 하면 ArgumentException이 발생하므로, 이를 처리할 필요가 있다.확인 및 제거특정 키가 존재하는지 확인하려면 ContainsKey 메서드를 사용한다.키 - 값 쌍을 제거하려면 Remove 메서드를 사용한다.

언어/C# 2024.08.06

확장 메서드(Extension Method)

확장 메서드(Extension Method)기존 타입에 새로운 메서드를 추가할 수 있게 해준다. 이는 원본 타입의 소스 코드를 수정하지 않고도 새로운 기능을 추가할 수 있는 강력한 방법이다.기본 개념정적 클래스 내에 정의된다.첫 번째 매개변수에 this 키워드를 사용한다.이 첫 번째 매개변수는 확장하고자 하는 타입을 나타낸다.문법public static class ExtensionClass{ public static ReturnType MethodName(this ExtendedType variable, OtherParameters) { // 메서드 구현 }}특징원본 타입을 수정하지 않고 새 기능을 추가할 수 있다.인스턴스 메서드처럼 호출할 수 있다.네임스페이스를 통해 확장 ..

언어/C# 2024.08.06

bool 함수<TEnum>(this TEnum, params TEnum[])

bool 함수(this TEnum, params TEnum[])제네릭 타입 매개변수은 제네릭 타입 매개변수이다. 이는 함수가 특정 타입에 대해 동작함을 나타낸다.확장 메서드this TEnum은 이 함수가 확장 메서드임을 나타낸다.이는 TEnum 타입의 객체에 대해 이 메서드를 직접 호출할 수 있게 해준다.가변 길이 매개변수params TEnum[]는 가변 길이 매개변수 배열이다.이 함수를 호출할 때 0개 이상의 TEnum 타입 인자를 전달할 수 있다.params TEnum[] 를 통해 Enum 값들의 배열을 받을 수 있으며, 이는 리스트와 유사하게 동작할 수 있다.

언어/C# 2024.08.06

MethodImpl

MethodImplMethodlmpl 특성(attribute)은 .NET에서 메서드의 구현 방식이나 특정 기능을 지정하는 데 사용된다. 이 특성은 주로 성능 최적화, 동기화, 인라인(inline) 규칙 등을 제어하기 위해 사용된다.MethodImplAttribute는 System.Runtime.CompilerServices 네임스페이스에 정의되어 있으며, 메서드, 생성자 또는 속성 접근자에 적용할 수 있다.주요 MethodImplOptions 값NoInlining메서드가 JIT(Just-In-Time) 컴파일러에 의해 인라인되지 않도록 한다. 인라인은 메서드 호출을 메서드 본문으로 대체하는 최적화 기술이다.AggressiveInliningJIT 컴파일러가 가능하면 메서드를 인라인하려고 시도하도록 한다. ..

언어/C# 2024.08.06
728x90