C#에서 List<List<object>>처럼 객체(object)를 요소로 갖는 리스트의 리스트를 생성하면, 하나의 제네릭 리스트 안에 서로 다른 타입의 리스트를 원하는 개수만큼 저장할 수 있습니다. object는 .NET의 모든 타입의 최상위 기본 클래스이기 때문에, 정수형 리스트든 문자열 리스트든 모두 이 구조에 담을 수 있습니다.
List<List<object>> list = new List<List<object>>();
예제 코드
아래 예제에서는 정수형 데이터를 담은 리스트와 문자열 데이터를 담은 리스트를 각각 생성한 뒤, 하나의 List<List<object>>에 추가하고 중첩된 foreach 문으로 전체 요소를 출력합니다.
using System;
using System.Collections.Generic;
namespace MyApplication {
public class Program {
public static void Main() {
// 객체 리스트를 담는 제네릭 리스트 생성
List<List<object>> list = new List<List<object>>();
// 첫 번째 리스트: 정수형 데이터 저장
List<object> list1 = new List<object>();
list1.Add(101);
list1.Add(102);
list1.Add(103);
list.Add(list1);
// 두 번째 리스트: 문자열 데이터 저장
List<object> list2 = new List<object>();
list2.Add("Test1");
list2.Add("Test2");
list2.Add("Test3");
list.Add(list2);
// 중첩 foreach 문으로 모든 요소 출력
foreach (List<object> objectList in list) {
foreach (object obj in objectList) {
Console.WriteLine(obj);
}
Console.WriteLine();
}
}
}
}실행 결과
위 코드를 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.
101 102 103 Test1 Test2 Test3
참고 사항
object 타입을 사용하는 방식은 유연하지만 몇 가지 주의할 점이 있습니다. 값 타입(int, double 등)을 object에 담으면 박싱(boxing)이 발생해 성능에 영향을 줄 수 있으며, 요소를 사용할 때는 원래 타입으로 캐스팅해야 하므로 타입 안정성이 떨어집니다. 따라서 실무에서는 타입이 명확한 경우 강력한 타입의 클래스나 튜플(Tuple), 레코드(record) 등을 활용해 데이터를 그룹화하는 것이 더 권장됩니다.