[C#/dotnet] 제네릭 (Generics)

2024. 10. 23. 17:42·C#
728x90
728x90

참조

https://learn.microsoft.com/ko-kr/dotnet/csharp/fundamentals/types/generics

 

 


제네릭 (Generics)

  - 특정 데이터 형식에 의존하지 않는 클래스/메서드를 정의할 수 있음

     → 다양한 데이터 형식 처리

  - 하나 이상의 형식 매개변수를 사용함

     → 일반적으로 T, U 등으로 표기됨

  - 동일한 코드에서 여러 데이터 형식을 처리할 수 있음

     → 코드 중복 감소 / 유지 보수성 UP

 

▶ 제네릭의 장점을 보여주는 예시

# 제네릭을 사용하지 않을 때

class IntList {
	public IList<int> list { get; set; } = new List<int>();

	public void Add(int value) {
		list.Add(value);
	}
}

class StringList
{
	public IList<string> list { get; set; } = new List<string>();

	public void Add(string value)
	{
		list.Add(value);
	}
}

// ----
var intList = new intList();
var stringList = new StringList();

# 제네릭을 사용할 때

class GenericList<T>
{
	public IList<T> list { get; set; } = new List<T>();

	public void Add(T value)
	{
		list.Add(value);
	}
}

// -----
var intList = new GenericList<int>();
var stringList = new GenericList<String>();

  - 하나의 클래스로 여러 자료형의 요소를 담는 리스트 객체를 구현할 수 있음

 

▶ 제네릭 형식 매개변수에 대한 제약 조건 지정하기

// IComparable 자료형만 매개변수에 넣을 수 있도록 제한
public class GenericClass<T> where T : IComparable

// 매개변수가 없는 기본 생성자만 갖는 자료형만 매개변수에 넣을 수 있도록 제한
public class GenericClass<T> where T : new()

// 여러 제약 조건을 동시에 지정
public class GenericClass<T> where T : BaseClass, IComparable, new()

 

320x100
반응형
저작자표시 비영리 변경금지 (새창열림)

'C#' 카테고리의 다른 글

[C#/dotnet] 페이지 구조 - 마스터 페이지 & 콘텐츠 페이지  (1) 2024.10.24
[C#/dotnet] 페이지 수명 주기  (3) 2024.10.24
[C#/dotnet] LINQ (Language-Integrated Query)  (0) 2024.10.23
[C#/dotnet] 일반적인 C# 코드 규칙  (2) 2024.10.23
[C#/dotnet] 식별자 명명 규칙  (0) 2024.10.18
'C#' 카테고리의 다른 글
  • [C#/dotnet] 페이지 구조 - 마스터 페이지 & 콘텐츠 페이지
  • [C#/dotnet] 페이지 수명 주기
  • [C#/dotnet] LINQ (Language-Integrated Query)
  • [C#/dotnet] 일반적인 C# 코드 규칙
스응
스응
    반응형
    250x250
  • 스응
    이서영의 개발 블로그
    스응
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (384)
      • Java (134)
        • Base (54)
        • Spring Boot (37)
        • JSP (16)
        • Swing (GUI) (20)
        • Design Pattern (7)
      • C# (13)
      • PHP (18)
      • SQL (27)
      • Vue.js (9)
      • Tailwind CSS (4)
      • TypeScript (7)
      • HTML & CSS (27)
      • JavaScript (26)
      • jQuery (10)
      • Android (3)
      • - - - - - - - - - - - - - - (0)
      • Hotkeys (5)
      • CS (30)
      • etc. (13)
      • Error Note (16)
      • Team Project (24)
        • Airlines Web Project (12)
        • University Web Project (6)
        • Strikers 1945 GUI Project (6)
      • My Project (18)
        • Library Web Project (8)
        • Pet Shopping Mall GUI Project (10)
  • 블로그 메뉴

    • Home
    • Write
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    CSS
    개발일지
    Hotkeys
    SpringBoot
    Codeigniter
    cs
    오블완
    typeScript
    java
    http
    tailwindcss
    js
    php
    SQL
    Swing
    면접
    C#
    vuejs
    jsp
    jQuery
    Wordpress
    errorNote
    Android
    HTML
    zapier
    티스토리챌린지
    SEO
    git
    SWAGGER
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
스응
[C#/dotnet] 제네릭 (Generics)
상단으로

티스토리툴바