c# 개념잡기 – Generic

박싱 & 언박싱

  • 값타입 –박싱–> 참조타입
  • 참조타입 –언박싱–> 값타입

값타입

  • 단순타입 : int, byte, char, float, decimal, bool 등
  • 열거형타입 : enum
  • 구조체타입 : struct
  • nullable 타입 : int?, double? 등

참조타입

  • 클래스 타입 : object, string, class
  • 인터페이스 타입 : interface
  • 배열타입 : Array(int[], int[,] 등)
  • 델리게이트 타입 : delegate

Generic

  • boxing, unboxing 에 사용되는 리소스 소비 해결
  • Generic에 사용되는 타입은 일반적으로 T로 명명

Generic 제한사항

  • 제네릭 적용 클래스는 ContextBoundObject 클래스로 파생될 수 없음 : 런타임 오류발생
  • 제네릭은 열거형에 사용못함
  • 제네릭은 Reflection을 이용해 생성되는 동적메소드에 사용못함.

Generic 제약사항

  • 제네릭이 클래스레벨에서 지정될때 where로 제약을 지정할 수 있음

.Net Framework에서 제공하는 Generic

  • Dictionary<TKey, TValue> : Hashtable의 제네릭 버전. Key & Value가 한쌍. Key는 유일
  • List<T> : ArrayList의 제네릭 버전. 배열의 크기를 동적으로 구성
  • SortedList<TKey, TValue> : Dictionary + List. Key & Value가 한쌍. 동적 배열. Key값으로 정렬됨.
  • LinkedList<T> : 새로생김.
  • Queue<T> : Queue의 제네릭 버전
  • Stack<T> : Stack의 제네릭 버전
타입 제네릭 비제네릭 제네릭 네임스페이스
클래스 List<T> ArrayList System.Collections.Generic
Dictonary<TKey, TValue> HashTable
SortedList<TKey, TValue> SortedList
Stack<T> Stack
Queue<T> Queue
LinkedList<T>
ReadOnlyCollection<T> System.Collections.ObjectModel
KeyedCollection<TKey, TValue>
인터페이스 IList<T> IList System.Collections.Generic
IDictonary<TKey, TValue> IDictonary
ICollection<T> ICollection
IEumerator<T> IEumerator
IEumerable<T> IEumerable
IComparer<T> IComparer
IComparable<T> IComparable

 

Notice

  • 이 저작물은 크리에이티브 커먼즈 저작자표시-비영리-변경금지 2.0 대한민국 라이선스에 따라 이용할 수 있습니다. 크리에이티브 커먼즈 라이선스
  • 저작권과 관련된 파일요청 및 작업요청을 받지 않습니다.
  • 댓글에 대한 답변은 늦을 수도 있습니다.
  • 댓글 남기기