메서드 매개 변수의
lock
문 및 스레드 동기화와 관련된 몇 가지 오류가 있습니다.
- CS0225: params 매개 변수는 1차원 배열이어야 하며 유효한 컬렉션 형식이 있어야 합니다.
- CS0231: params 매개 변수는 정식 매개 변수 목록에서 마지막에 있어야 합니다.
- CS0466: 'method1'이 없어 'method2'에 params 매개 변수를 사용할 수 없습니다.
- CS0674:
System.ParamArrayAttribute
또는System.ParamArrayAttribute
/System.Runtime.CompilerServices.ParamCollectionAttribute
를 사용하지 마세요. 대신params
키워드를 사용합니다. - CS0758: 두 부분 메서드 선언 모두
params
매개 변수를 사용하거나params
매개 변수를 사용할 수 없습니다. - CS1104: 매개 변수 배열은 확장 메서드의
this
한정자와 함께 사용할 수 없습니다. - CS1611: params 매개 변수는
ref
또는out
으로 선언될 수 없습니다. - CS1670: 이 컨텍스트에서는
params
를 사용할 수 없습니다. - CS1751: 매개 변수 배열의 기본값을 지정할 수 없습니다.
- CS9218: 동적 형식의 인수가 사용되고 메서드에 비배열 params 컬렉션 매개 변수가 있으므로 메서드의 형식 인수를 사용에서 유추할 수 없습니다. 형식 인수를 명시적으로 지정해 보세요.
- CS9223: params 컬렉션을 만들면 생성자 호출의 무한 체인이 발생합니다.
- CS9224: 메서드는 params 컬렉션이 있는 멤버보다 덜 표시될 수 없습니다.
- CS9225: 생성자는 필수 멤버를 초기화되지 않은 상태로 둡니다.
- CS9227: 형식에 적합한 인스턴스
Add
메서드에 대한 정의가 포함되어 있지 않습니다. - CS9228: 비배열 params 컬렉션 형식에는 인수 없이 호출할 수 있는 해당 생성자가 있어야 합니다.
다음 오류는 해당 컨텍스트에서 params
한정자가 허용되지 않는 상황에서 매개 변수에 params
한정자를 사용하는 것을 나타냅니다.
- CS0231: params 매개 변수는 정식 매개 변수 목록에서 마지막에 있어야 합니다.
- CS1104: 매개 변수 배열은 확장 메서드의
this
한정자와 함께 사용할 수 없습니다. - CS1611: params 매개 변수는
ref
또는out
으로 선언될 수 없습니다. - CS1670: 이 컨텍스트에서는
params
를 사용할 수 없습니다. - CS1751: 매개 변수 배열의 기본값을 지정할 수 없습니다.
컴파일러는 메서드 매개 변수에서 params
한정자를 사용할 때 다음 규칙을 적용합니다.
params
한정자는 공식 매개 변수 목록의 마지막 매개 변수에서만 허용됩니다. 여기에는 기본값이 있는 모든 매개 변수가 포함됩니다.params
한정자를 사용하는 경우 매개 변수에 대한 기본 인수를 포함할 수 없습니다.params
한정자는 참조 매개 변수에 적용할 수 없습니다. 참조 매개 변수는in
,ref readonly
,ref
또는out
한정자가 있는 매개 변수입니다.params
한정자는 확장 메서드의this
한정자와 함께 사용할 수 없습니다.- 오버로드된 연산자에서는
params
한정자를 사용할 수 없습니다.
C# 12 이전 버전에서는 무명 메서드 또는 람다 식의 매개 변수에 params
한정자를 사용할 수 없습니다.
다음 오류는 params
와 함께 사용하는 매개 변수의 형식이 유효하지 않음을 나타냅니다.
- CS9218: 동적 형식의 인수가 사용되고 메서드에 비배열 params 컬렉션 매개 변수가 있으므로 메서드의 형식 인수를 사용에서 유추할 수 없습니다. 형식 인수를 명시적으로 지정해 보세요.
- CS0225: params 매개 변수는 1차원 배열이어야 하며 유효한 컬렉션 형식이 있어야 합니다.
- CS9227: 형식에 적합한 인스턴스
Add
메서드에 대한 정의가 포함되어 있지 않습니다. - CS9228: 비배열 params 컬렉션 형식에는 인수 없이 호출할 수 있는 해당 생성자가 있어야 합니다.
C# 13 이전 버전에서는 1차원 배열에서만 params
한정자가 허용됩니다. 다른 형식은 유효하지 않았습니다.
C# 13부터 유효한 컬렉션 형식을 사용할 수 있습니다. 그러나 일부 제한 사항은 남아 있습니다. 컬렉션 형식은 컬렉션 식의 대상과 동일한 규칙을 따라야 합니다.
다음 오류는 params
한정자 사용과 관련된 그밖의 문제를 나타냅니다.
- CS0466: ‘method1'이 없어 'method2'에 params 매개 변수를 사용할 수 없습니다.
- CS0674:
System.ParamArrayAttribute
또는System.Runtime.CompilerServices.ParamCollectionAttribute
를 사용하지 마세요. 대신params
키워드를 사용합니다. - CS0758: 두 부분 메서드 선언 모두
params
매개 변수를 사용해야 하거나params
매개 변수를 사용할 수 없습니다. - CS9223: params 컬렉션을 만들면 생성자 호출의 무한 체인이 발생합니다.
- CS9224: 메서드는 params 컬렉션이 있는 멤버보다 덜 표시될 수 없습니다.
- CS9225: 생성자는 필수 멤버를 초기화되지 않은 상태로 둡니다.
인터페이스를 구현하는 메서드는 인터페이스 멤버에 params
한정자가 있는 경우에만 params
한정자를 포함해야 합니다. 마찬가지로 partial
메서드의 두 선언 모두 params
한정자를 포함해야 하거나 params
한정자를 포함할 수 없습니다.
params
한정자를 사용해야 합니다. 해당하는 특성인 System.ParamArrayAttribute 또는 System.Runtime.CompilerServices.ParamCollectionAttribute를 적용할 수 없습니다.
컴파일러는 컬렉션 형식을 만들기 위해 생성된 코드가 유효하지 않은 경우 이전 목록에서 마지막 세 가지 오류 중 하나를 생성합니다.
- 컴파일러는 컬렉션을 만들기 위해 내보낸 코드에 동일한 형식의 params 컬렉션도 포함된 경우 CS9223을 내보냅니다. 일반적으로
Add
메서드는 동일한 형식의params
컬렉션을 사용합니다. - 컬렉션 형식에 대한
Create
메서드가 컬렉션 형식의params
매개 변수를 사용하는 메서드보다 접근성이 낮은 경우 컴파일러는 CS9224를 내보냅니다. - 컴파일러는 컬렉션 형식에 필수 멤버가 있고 매개 변수가 없는 생성자가 해당 멤버를 초기화하지 않고 매개 변수가 없는 생성자에 System.Diagnostics.CodeAnalysis.SetsRequiredMembersAttribute가 있는 경우 CS9225를 내보냅니다.
.NET 피드백
.NET 은(는) 오픈 소스 프로젝트입니다. 다음 링크를 선택하여 피드백을 제공해 주세요.