← 목록으로

CSharp

C# 배열과 List, 왜 .ToList()가 필요할까

· 1분 읽기

문제 상황

필드는 배열로 선언돼 있는데, 메서드는 리스트를 받는다.

// 필드 선언부: 배열
private string[] OutProcessCd = { "PR002", "PR003", "PR006", "PR007", "PR008" };

// 메서드 파라미터: 리스트
public DataTable Select_Process(List<string> processCds = null, bool all_Yn = false)

OutProcessCd를 그대로 넘기면 타입이 안 맞아서 컴파일 에러가 난다.

왜 다른 타입인가

타입 예시
string[] (배열) { "PR002", "PR003" } — 크기 고정
List<string> (리스트) new List<string> { "PR002", "PR003" } — 크기 가변

배열은 선언 시점에 크기가 고정되고, 리스트는 요소를 추가/삭제할 수 있다. 서로 다른 타입이라 암묵적으로 변환되지 않는다.

해결: .ToList()

LINQ가 제공하는 .ToList()로 배열을 리스트로 바꿔주면 된다.

string[] arr = { "A", "B", "C" };
List<string> list = arr.ToList(); // 배열 → 리스트 변환

즉 Select_Process(OutProcessCd.ToList())처럼 호출 지점에서 타입만 맞춰주면 끝이다.

한 줄 요약

배열과 리스트는 다른 타입이다. .ToList()는 그 차이를 메워주는 변환 메서드일 뿐, 복잡한 로직이 아니다.