상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - C#에서 제네릭(Generics)의 개념은 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
C 에서 제네릭(Generics)은 데이터 타입을 매개변수로 받아들여, 다양한 데이터 타입에 대해 동일한 코드 로직을 적용할 수 있도록 하는 기능입니다. 제네릭을 사용하면 코드의 재사용성을 높이고, 타입 안전성을 강화하며, 성능을 개선할 수 있습니다. 제네릭은 C 2.0부터 도입되었으며, 다양한 컬렉션, 메서드, 클래스, 인터페이스 등에 활용됩니다. 제네릭의 주요 개념 1. 타입 매개변수 : 제네릭은 타입 매개변수를 사용하여 특정 데이터 타입을 지정하지 않고, 나중에 사용할 때 실제 타입을 지정합니다. 예를 들어, `L<a href='https://sangseek.com/sangseeks/ist<T>/ko'>ist<T></a>`는 `T`라는 타입 매개변수를 사용하여 다양한 타입의 리스트를 생성할 수 있습니다. 2. 타입 안전성 : 제네릭을 사용하면 컴파일 타임에 <a href='https://sangseek.com/sangseeks/타입 체크/ko'>타입 체크</a>가 이루어지므로, 런타임 오류를 줄일 수 있습니다. 예를 들어, `List<int>`와 `List<string>`은 서로 다른 타입으로 안전하게 구분되며, 잘못된 타입의 데이터를 추가하려고 하면 컴파일 에러가 발생합니다. 3. 코드 재사용성 : 제네릭을 사용하면 동일한 로직을 다양한 데이터 타입에 대해 재사용할 수 있습니다. 예를 들어, 정수, 문자열, 사용자 정의 객체 등을 저장할 수 있는 리스트를 하나의 <a href='https://sangseek.com/sangseeks/제네릭 클래스/ko'>제네릭 클래스</a>로 구현할 수 있습니다. 4. 성능 : 제네릭을 사용하면 박싱(boxing)과 언박싱(unboxing)과 같은 성능 저하를 초래하는 작업을 피할 수 있습니다. 예를 들어, `A<a href='https://sangseek.com/sangseeks/rrayList/ko'>rrayList</a>`와 같은 비제네릭 컬렉션은 모든 객체를 `object` 타입으로 다루기 때문에, 값 타입을 사용할 경우 박싱이 발생합니다. 반면, 제네릭 컬렉션은 값 타입을 직접 사용할 수 있어 성능이 개선됩니다. 제네릭의 사용 예 제네릭을 사용하는 방법은 매우 다양합니다. 다음은 제네릭 클래스를 정의하고 사용하는 간단한 예입니다. ```csharp // 제네릭 클래스 정의 public class GenericList<T> { private List<T> items = new List<T>(); public void Add(T item) { items.Add(item); } public T Get(int index) { return items[index]; } public int Count { get { return items.Count; } } } // 제네릭 클래스 사용 public class Program { public static void Main() { // <a href='https://sangseek.com/sangseeks/정수형/ko'>정수형</a> 리스트 GenericList<int> intList = new GenericList<int>(); intList.Add(1); intList.Add(2); Console.WriteLine(intList.Get(0)); // 출력: 1 // 문자열 리스트 GenericList<string> stringList = new GenericList<string>(); stringList.Add("Hello"); stringList.Add("World"); Console.WriteLine(stringList.Get(1)); // 출력: World } } ``` 제네릭 메서드 제네릭은 클래스뿐만 아니라 메서드에서도 사용할 수 있습니다. 다음은 제네릭 메서드의 예입니다. ```csharp public class Utility { public static T GetMax<T>(T a, T b) where T : IComparable<T> { return a.CompareTo(b) > 0 ? a : b; } } // 제네릭 메서드 사용 public class Program { public static void Main() { int maxInt = Utility.GetMax(10, 20); Console.WriteLine(maxInt); // 출력: 20 string maxString = Utility.GetMax("apple", "banana"); Console.WriteLine(maxString); // 출력: banana } } ``` 제네릭 제약 조건 제네릭 타입 매개변수에 대해 제약 조건을 설정할 수 있습니다. 예를 들어, 특정 클래스나 인터페이스를 상속받은 타입만 사용할 수 있도록 제한할 수 있습니다. 다음은 제약 조건의 예입니다. ```csharp public class Repository<T> where T : IEntity { public void Save(T entity) { // <a href='https://sangseek.com/sangseeks/엔티티/ko'>엔티티</a> 저장 로직 } } public interface IEntity { int Id { get; set; } } public class User : IEntity { public int Id { get; set; } public string Name { get; set; } } ``` 결론 C 의 제네릭은 코드의 재사용성을 높이고, 타입 안전성을 강화하며, 성능을 개선하는 데 큰 도움이 되는 기능입니다. 제네릭을 통해 다양한 데이터 타입을 처리할 수 있는 유연한 코드를 작성할 수 있으며, 이를 통해 개발자는 더 효율적이고 안전한 프로그램을 만들 수 있습니다. 제네릭은 C 의 강력한 기능 중 하나로, 현대적인 소프트웨어 개발에서 매우 중요한 역할을 하고 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기