Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#에서 하나의 제네릭 리스트에 서로 다른 타입의 리스트 여러 개 저장하는 방법

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) 등을 활용해 데이터를 그룹화하는 것이 더 권장됩니다.