본문 바로가기
반응형

C#61

[C#] IEqualityComparer<T>, IEqualityComparer, EqualityComparer IEqualityComparer 인터페이스 IEqualityComparer 인터페이스 (System.Collections.Generic) 개체가 같은지 비교할 수 있는 메서드를 정의합니다. learn.microsoft.com IEqualityComparer 인터페이스 IEqualityComparer 인터페이스 (System.Collections) 개체가 같은지 비교할 수 있는 메서드를 정의합니다. learn.microsoft.com namespace System.Collections { public interface IEqualityComparer { bool Equals(object x, object y); int GetHashCode(object obj); } } EqualityComparer 클래스.. 2023. 10. 2.
[C#] KeyedCollection<TKey,TItem>, DictionaryBase KeyedCollection KeyedCollection 클래스 (System.Collections.ObjectModel) 키가 값에 포함되어 있는 컬렉션에 대한 추상 기본 클래스를 제공합니다. learn.microsoft.com namespace System.Collections.ObjectModel { public abstract class KeyedCollection : Collection { protected KeyedCollection(); protected KeyedCollection(IEqualityComparer comparer); protected KeyedCollection(IEqualityComparer comparer, int dictionaryCreationThreshold); p.. 2023. 9. 30.
[C#] Collection<T>, CollectionBase, ReadOnlyCollection<T> 커스텀화 가능한 컬렉션과 프록시 - 일반적인 컬렉션 클래스들은 바로 인스턴스화 해서 쓸 수 있지만, 세밀한 컨트롤이 불가능함 - 예를 들자면... * 항목이 추가되거나 제거되면 이벤트를 발동 * 추가 또는 제거된 항목에 맞게 속성들을 갱신 * 규칙에 맞지 않는 연산을 검출하여 예외를 던짐 - System.Collections.ObjectModel 이름 공간 안에는 이런 용도를 위한 클래스들을 제공 * IList나 IDictionary를 구현하는 래퍼(Wrapper)나 프록시(Proxy) * 메서드들을 바탕 컬렉션에 전달하는 역할 * Add, Remove 같은 연산을 일종의 관문(Gateway) 역할을 하는 가상 메서드에 연결 * 커스텀 컬렉션을 만들 때에는 그 가상 메서드들을 적절히 재정의함으로서 원하는.. 2023. 9. 28.
[C#] SortedDictionary<TKey,TValue>, SortedList<Tkey,TValue>, SortedList SortedDictionary 클래스 SortedDictionary 클래스 (System.Collections.Generic) 키에 따라 정렬된 키/값 쌍의 컬렉션을 나타냅니다. learn.microsoft.com SortedList 클래스 SortedList 클래스 (System.Collections.Generic) 연관된 IComparer 구현을 기반으로 키에 따라 정렬된 키/값 쌍의 컬렉션을 나타냅니다. learn.microsoft.com SortedList 클래스 SortedList 클래스 (System.Collections) 키를 기준으로 정렬되고 키와 인덱스로 액세스할 수 있는 키/값 쌍의 컬렉션을 나타냅니다. learn.microsoft.com - 요소들을 항상 키를 기준으로 정렬된 상태로 .. 2023. 9. 26.
[C#] OrderedDictionary, ListDictionary, HybridDictionary OrderedDictionary 클래스 OrderedDictionary 클래스 (System.Collections.Specialized) 키나 인덱스에서 액세스할 수 있는 키/값 쌍의 컬렉션을 나타냅니다. learn.microsoft.com - .NET 2.0 - 비제네릭 사전 클래스, 제네릭 버전은 없음 - Hashtable + ArrayList(RemoveAt, 정수 인덱서 등을 지원) - 요소들의 저장 순서가 추가 순서와 동일함 -> 키 뿐만 아니라 색인으로도 요소에 접근 할 수 있음 ListDictionary 클래스 ListDictionary 클래스 (System.Collections.Specialized) 단일 연결 목록을 사용하여 IDictionary를 구현합니다. 일반적으로 10개 미만의 항.. 2023. 9. 24.
[C#] Dictionary<TKey,TValue>, Hashtable Dictionary 클래스 Dictionary 클래스 (System.Collections.Generic) 키와 값의 컬렉션을 나타냅니다. learn.microsoft.com - 해시테이블 자료구조에 키들과 값들을 저장하므로 빠르고 효율적임 - Dictionary는 IDictionary 인터페이스의 제네릭 버전, 비제네릭 버전을 모두 구현 * 단, 제네릭 버전만 공용으로 노출 - Dictionary는 제네릭 IDictionary의 교과서적 구현 var myDictionary = new Dictionary(); myDictionary.Add("하나", 1); // add를 통한 추가 myDictionary["둘"] = 20; // 인덱서를 통한 추가 myDictionary["둘"] = 2; // 인덱서를 통.. 2023. 9. 22.
[C#] IDictionary<TKey,TValue>, IReadOnlyDictionary<TKey,TValue>, IDictionary IDictionary 인터페이스 IDictionary 인터페이스 (System.Collections.Generic) 키/값 쌍의 제네릭 컬렉션을 나타냅니다. learn.microsoft.com - 모든 키-값 쌍 기반 컬렉션의 표준 프로토콜을 정의 - 임의의 형식의 키에 기초해서 요소들에 접근하는 메서드들과 속성들을 추가해서 ICollection를 확장함 namespace System.Collections.Generic { public interface IDictionary : ICollection, IEnumerable, IEnumerable { TValue this[TKey key] { get; set; } // 주 인덱서(키로 접근) ICollection Keys { get; } // 키 IColl.. 2023. 9. 20.
[C#] HashSet<T>, SortedSet<T> HashSet 클래스 HashSet 클래스 (System.Collections.Generic) 값 집합을 나타냅니다. learn.microsoft.com - .NET 3.5 - ISet 인터페이스에 기반 - Contains 메서드는 해시 기반 조회(Hash-Based Lookup)를 이용해서 빠르게 실행 됨 - 중복된 원소를 저장하지 않음(수학에서의 집합-Set) - 색인으로 특정 원소에 접근 할 수 없음 - 키들을 저장하는 해시테이블로 구성 * SymmetricExceptWith 메서드 - 책에는 두 집합에 모두 있는 원소들을 첫 집합에서 제거한다 라고 적혀있어서 좀 햇갈렸음 - 대칭차집합인데, 두 집합에서 두 집합의 교집합을 제외한 합집합이라고 생각하면 될 것 같음 namespace System.Co.. 2023. 9. 16.
[C#] BitArray BitArray 클래스 BitArray 클래스 (System.Collections) 부울로 나타나는 간단한 비트 값 배열을 관리합니다. 여기에서 true는 비트가 설정(1)되었음을 나타내고 false는 비트가 해제(0)되었음을 나타냅니다. learn.microsoft.com - bool 값을 빽빽하게 저장하는 컬렉션 - 컬렉션 크기의 동적 변경을 지원 - bool 값 하나당 1바이트가 아닌 1비트만을 사용하므로 저장 공간을 효율적으로 이용함 namespace System.Collections { public sealed class BitArray : ICollection, IEnumerable, ICloneable { // 생성자 public BitArray(int length); // 비트의 수 설정,.. 2023. 9. 14.
[C#] Queue<T>, Queue, Stack<T>, Stack Queue 클래스 Queue 클래스 (System.Collections.Generic) 개체의 선입선출(FIFO) 컬렉션을 나타냅니다. learn.microsoft.com - 선입선출(FIFO; first-in, first-out) 방식의 대기열(Queue) 자료구조를 나타내는 클래스 - 색인으로 특정 요소에 직접 접근할 수 없기에 IList 와 IList를 구현하지 않음 * 임의 접근이 필요하면 ToArray 메서드를 통해 배열에 복사하여 사용 - 대기열은 내부적으로 배열로 구현됨 * 요소를 담을 공간이 부족해지면 대기열은 내부 배열을 더 큰 배열로 대체 * 삽입, 삭제 연산은 효율적(단 삽입으로 인해 크기가 변하지 않을 경우) namespace System.Collections.Generic { pu.. 2023. 9. 12.
반응형