라벨이 가변 매개변수인 게시물 표시

C# params 가변 매개변수 사용법과 배열 전달 시 주의점

이미지
C#의 params는 같은 형식의 인수를 0개부터 여러 개까지 자연스럽게 받게 해줍니다. 메서드 내부에서는 배열처럼 다루지만, 선언 위치와 오버로드 조합을 잘못 잡으면 호출이 모호해질 수 있어요. 기존 코드의 params 선언과 호출 예제입니다. params 매개변수는 매개변수 목록의 마지막에 하나만 둘 수 있습니다. 먼저 확인할 답 C#의 params는 같은 형식의 인수를 0개부터 여러 개까지 자연스럽게 받게 해줍니다. 메서드 내부에서는 배열처럼 다루지만, 선언 위치와 오버로드 조합을 잘못 잡으면 호출이 모호해질 수 있어요. 호출자는 쉼표로 값을 넘기고 메서드는 배열로 받는다 params int[] numbers로 선언하면 Sum(1, 2, 3)처럼 호출할 수 있습니다. 컴파일러가 인수를 배열 형태로 묶어 전달하며, 이미 int[] 배열이 있다면 그 배열 자체를 넘길 수도 있어요. 인수를 하나도 쓰지 않은 Sum()도 허용되므로 메서드가 빈 배열을 어떻게 처리할지 정해야 합니다. params는 매개변수 목록의 마지막에 하나만 올 수 있습니다. 앞에는 일반 매개변수를 둘 수 있지만 뒤에는 둘 수 없어요. 서로 다른 형식을 무작정 object[]로 받으면 호출은 편해 보여도 실행 중 형식 검사가 늘어나므로 공통 형식이나 제네릭 설계를 먼저 검토합니다. 배열을 넘기는 호출과 여러 값을 나열하는 호출을 구분한다 Sum(values)는 기존 배열을 전달하는 호출이고 Sum(1,2,3)은 컴파일러가 전달 구조를 만들어 주는 호출입니다. 반복이 매우 잦은 성능 민감 경로에서는 할당과 호출 형태를 측정해야 하지만, 대부분의 일반 코드에서는 API의 읽기 쉬움이 먼저예요. null을 명시적으로 전달하면 빈 호출과 의미가 달라질 수 있습니다. nullable 경고를 켜고 null을 허용하지 않도록 계약을 정하거나, 메서드 시작에서 ArgumentNullException.ThrowIfNull을 사용하세요. 빈 배열은 정상 입력인지 오류인지도 문서와 테스트에 남겨야 합니다. ...