Contents
접기
728x90
지난 글([C#] 왜 object형식외에 다른 형식을 배울까?)에서 object[]배열은 제네릭을 사용하기 어려운 경우에 사용한다고 했다.
그렇다면 제네릭을 사용하기 어려운 경우는 언제일까?
런타임에 타입이 결정되는 경우
✔ 컴파일 타임에 타입을 알 수 없고, 런타임에서만 결정될 때
✔ 예를 들어, JSON 파일을 읽거나, Reflection을 사용할 때
📌 제네릭을 쓰려면 모든 타입을 미리 정해야 하지만, JSON 데이터를 받을 때는 타입이 다양할 수 있다
Reflection을 사용할 때
✔ C#의 Reflection을 사용하면 타입을 동적으로 다룰 수 있음
✔ 제네릭은 컴파일 타임에 타입이 정해져야 하지만, Reflection은 런타임에서 타입을 처리
더보기
Reflection(리플렉션)이란?
C# 프로그램이 런타임에 자기 자신을 검사하고 수정할 수 있도록 하는 기능
즉, 프로그램이 실행 중에 클래스, 메서드, 속성, 필드 등의 정보를 조회하거나 동적으로 객체를 생성하고 메서드를 실행할 수 있다
쉽게 말해, C# 코드가 "자기 자신을 들여다볼 수 있는 기능"
컬렉션에 여러 타입의 데이터를 넣어야 할 때
✔ 보통은 제네릭 컬렉션을 사용하지만, 여러 타입의 데이터를 한 곳에 저장해야 한다면 object[]가 필요할 수 있다
📝 예제
object[] row = { 1, "Jang Dochi", 25, true };
Console.WriteLine($"ID: {row[0]}, Name: {row[1]}, Age: {row[2]}, Active: {row[3]}");
📌 테이블 형태의 데이터를 다룰 때, 각 열의 타입이 다르면 object[]를 사용할 수밖에 없다
📖 정리
제네릭은 강력하지만, 런타임에 타입이 결정되는 경우나 다양한 타입을 다뤄야 할 때는 object나 object[]를 사용할 수밖에 없다
하지만 일반적인 경우에는 제네릭을 쓰는 것이 더 안전하고 성능이 좋다
728x90
'C# > 배열과 리스트' 카테고리의 다른 글
[C#] 반복문을 활용한 배열접근 (0) | 2025.04.01 |
---|---|
[C#] 배열 요소 접근, 배열의 범위 (0) | 2025.04.01 |
[C#] 왜 object형식외에 다른 형식을 배울까? (0) | 2025.03.26 |
[C#] 배열의 기본 자료형 (0) | 2025.03.26 |
[C#] 배열의 개념 (0) | 2025.03.26 |