다음을 통해 공유


배열 및 컬렉션 선언과 초기화 식의 오류 및 경고 해결

이 문서에서는 다음 컴파일러 오류를 다룹니다.

  • CS0022: [] 내부의 인덱스 개수가 잘못되었습니다. 'number'개가 필요합니다.
  • CS0178: 잘못된 순위 지정자: ',' 또는 ']'가 필요합니다.
  • CS0248: 음수 크기의 배열을 만들 수 없습니다.
  • CS0270: 변수 선언에서 배열 크기를 지정할 수 없습니다('new' 식으로 초기화하세요).
  • CS0611: 배열 요소는 형식일 수 없습니다.
  • CS0623: 배열 이니셜라이저는 변수 또는 필드 이니셜라이저에서만 사용할 수 있습니다. 대신 새 식을 사용해 봅니다.
  • CS0650: 배열 선언자가 잘못되었습니다. 관리되는 배열을 선언하려면 차수 지정자가 변수 식별자보다 앞에 와야 합니다. 고정 크기 버퍼 필드를 선언하려면 fixed 키워드를 필드 형식 앞에 사용하세요.
  • CS0719: 배열 요소는 정적 형식일 수 없습니다.
  • CS0747: 잘못된 이니셜라이저 멤버 선언자입니다.
  • CS0820: 암시적으로 형식이 할당된 로컬에 배열 이니셜라이저를 할당할 수 없습니다.
  • CS0826: 암시적으로 형식이 지정된 배열에 가장 적합한 형식을 찾을 수 없습니다.
  • CS0846: 중첩 배열 이니셜라이저가 필요합니다.
  • CS1063: 컬렉션 이니셜라이저 요소에 가장 적합한 오버로드된 Add 메서드는 사용되지 않습니다.
  • CS1552: 배열 형식 지정자 []은 매개 변수 이름 앞에 나타나야 합니다.
  • CS1586: 배열 만들기에는 배열 크기 또는 배열 이니셜라이저가 있어야 합니다.
  • CS1920: 요소 이니셜라이저는 비워둘 수 없습니다.
  • CS1921: 최상의 오버로드된 메서드 일치에 이니셜라이저 요소에 대한 서명이 잘못되었습니다. 초기화 가능한 Add는 액세스 가능한 인스턴스 메서드여야 합니다.
  • CS1925: 컬렉션 이니셜라이저로 'type' 형식의 개체를 초기화할 수 없습니다.
  • CS1950: 컬렉션 이니셜라이저에 가장 잘 오버로드된 Add 메서드에는 몇 가지 잘못된 인수가 있습니다.
  • CS1954: 컬렉션 이니셜라이저 요소에 대해 가장 잘 일치하는 오버로드된 메서드를 사용할 수 없습니다. 컬렉션 이니셜라이저 'Add' 메서드는 ref 또는 out 매개 변수를 가질 수 없습니다.
  • CS9174: 형식이 생성 가능하지 않기 때문에 컬렉션 리터럴로 형식을 초기화할 수 없습니다.
  • CS9176: 컬렉션 리터럴에 대한 대상 유형이 없습니다.
  • CS9185: CollectionBuilderAttribute 빌더 형식은 일반이 아닌 클래스 또는 구조체여야 합니다.
  • CS9186: CollectionBuilderAttribute 메서드 이름이 잘못되었습니다.
  • CS9187: 예상 서명이 있는 액세스 가능한 메서드를 찾을 수 없습니다. ReadOnlySpan<T> 형식의 단일 매개 변수가 있는 정적 메서드입니다. 올바른 반환 형식
  • CS9188: 형식에 CollectionBuilderAttribute가 있지만 요소 형식이 없습니다.
  • CS9203: 이 형식의 컬렉션 식은 현재 범위 외부에 노출될 수 있으므로 이 컨텍스트에서 사용할 수 없습니다.
  • CS9210: 이 버전의 System.Collections.Immutable.ImmutableArray<T>는 컬렉션 식과 함께 사용할 수 없습니다.
  • CS9212: '..type'은 'member'에 대한 공용 인스턴스 또는 확장 정의를 포함하지 않으므로 'type' 형식의 변수에서 '' 분산 연산자를 사용할 수 없습니다.
  • CS9213: 컬렉션 식 대상 'type'에 요소 형식이 없습니다.
  • CS9214: 컬렉션 식 형식에는 인수 없이 호출할 수 있는 적용 가능한 생성자가 있어야 합니다.
  • CS9215: 컬렉션 식 형식 'type'에는 단일 인수로 호출할 수 있는 인스턴스 또는 확장 메서드 'Add'가 있어야 합니다.
  • CS9222: 컬렉션 이니셜라이저는 컬렉션 'type' 인스턴스화의 무한 체인을 생성합니다.
  • CS9332: catch 절의 필터 식에서 '..' 스프레드 연산자를 사용할 수 없습니다.
  • CS9354: 'with(...)' 요소가 첫 번째 요소여야 합니다.
  • CS9355: 'with(...)' 요소는 'type' 형식에 대해 지원되지 않습니다.
  • CS9356: 'with(...)' 요소 인수는 동적일 수 없습니다.
  • CS9357: 읽기 전용 인터페이스의 'with(...)' 요소는 비어 있어야 합니다(있는 경우).
  • CS9358: 이 컬렉션의 요소 형식은 ref 구조체 또는 ref 구조체를 허용하는 형식 매개 변수가 아닐 수 있습니다.
  • CS9359: 메서드 'method'에 대한 오버로드가 'number' 'with(...)' 요소 인수를 사용하지 않음

또한 이 문서에서는 다음 경고를 다룹니다.

  • CS1062: 컬렉션 이니셜라이저 요소에 가장 적합한 오버로드된 Add 메서드는 사용되지 않습니다.
  • CS1064: 컬렉션 이니셜라이저 요소에 가장 적합한 오버로드된 Add 메서드는 사용되지 않습니다.
  • CS3007: 명명되지 않은 배열 형식만 다른 오버로드된 'method' 메서드는 CLS 규격이 아닙니다.
  • CS3016: 특성 인수인 배열은 CLS를 준수하지 않습니다.
  • CS0251: 음수 인덱스를 사용하여 배열을 인덱싱했습니다. 배열 인덱스는 항상 0부터 시작합니다.
  • CS9208: 컬렉션 식으로 인해 예기치 않은 힙 할당이 발생할 수 있습니다. 명시적으로 배열을 만든 다음 최종 형식으로 변환하여 할당을 명시적으로 만드는 것이 좋습니다.
  • CS9209: '..' 스프레드 사용으로 인해 컬렉션 식에서 예기치 않은 힙 할당이 발생할 수 있습니다. 명시적으로 배열을 만든 다음 최종 형식으로 변환하여 할당을 명시적으로 만드는 것이 좋습니다.
  • CS9332: catch 절의 필터 식에서 '..' 스프레드 연산자를 사용할 수 없습니다.

잘못된 배열 요소 액세스

  • CS0022: [] 내부의 인덱스 개수가 잘못되었습니다. 'number'개가 필요합니다.
  • CS0251: 음수 인덱스를 사용하여 배열을 인덱싱했습니다. 배열 인덱스는 항상 0부터 시작합니다.

배열 요소에 올바르게 액세스하려면 다음 인덱싱 규칙을 따릅니다. 자세한 내용은 배열을 참조하세요.

  • 선언된 차원과 동일한 수의 인덱스를 지정합니다(CS0022). 1차원 배열에는 하나의 인덱스가 필요합니다. 3차원 배열에는 3개의 인덱스가 필요합니다.
  • 배열 인덱스에는 음수가 아닌 정수만 사용합니다(CS0251). 배열 인덱스는 항상 0부터 시작합니다.

잘못된 컬렉션 이니셜라이저

  • CS0747: 잘못된 이니셜라이저 멤버 선언자입니다.
  • CS1920: 요소 이니셜라이저는 비워둘 수 없습니다.
  • CS1921: 최상의 오버로드된 메서드 일치에 이니셜라이저 요소에 대한 서명이 잘못되었습니다. 초기화 가능한 Add는 액세스 가능한 인스턴스 메서드여야 합니다.
  • CS1922: 'type'이 'System.Collections.IEnumerable'을 구현하지 않으므로 컬렉션 이니셜라이저를 사용하여 'type' 형식을 초기화할 수 없습니다.
  • CS1925: 컬렉션 이니셜라이저로 'type' 형식의 개체를 초기화할 수 없습니다.
  • CS1927: 경고: 어셈블리에만 적용되므로 모듈에 대한 /win32manifest 무시
  • CS1950: 컬렉션 이니셜라이저에 가장 잘 오버로드된 Add 메서드에는 몇 가지 잘못된 인수가 있습니다.
  • CS1954: 컬렉션 이니셜라이저 요소에 대해 가장 잘 일치하는 오버로드된 메서드를 사용할 수 없습니다. 컬렉션 이니셜라이저 'Add' 메서드는 ref 또는 out 매개 변수를 가질 수 없습니다.
  • CS9174: 형식이 생성 가능하지 않기 때문에 컬렉션 리터럴로 형식을 초기화할 수 없습니다.
  • CS9176: 컬렉션 리터럴에 대한 대상 유형이 없습니다.
  • CS9203: 이 형식의 컬렉션 식은 현재 범위 외부에 노출될 수 있으므로 이 컨텍스트에서 사용할 수 없습니다.
  • CS9210: 이 버전의 System.Collections.Immutable.ImmutableArray<T> 컬렉션 식에는 사용할 수 없습니다.
  • CS9212: '..type'은 'member'에 대한 공용 인스턴스 또는 확장 정의를 포함하지 않으므로 'type' 형식의 변수에서 '' 분산 연산자를 사용할 수 없습니다.
  • CS9213: 컬렉션 식 대상 'type'에 요소 형식이 없습니다.
  • CS9214: 컬렉션 식 형식에는 인수 없이 호출할 수 있는 적용 가능한 생성자가 있어야 합니다.
  • CS9215: 컬렉션 식 형식 'type'에는 단일 인수로 호출할 수 있는 인스턴스 또는 확장 메서드 'Add'가 있어야 합니다.
  • CS9222: 컬렉션 이니셜라이저는 컬렉션 'type' 인스턴스화의 무한 체인을 생성합니다.
  • CS9332: catch 절의 필터 식에서 '..' 스프레드 연산자를 사용할 수 없습니다.
  • CS9354: 'with(...)' 요소가 첫 번째 요소여야 합니다.
  • CS9355: 'with(...)' 요소는 'type' 형식에 대해 지원되지 않습니다.
  • CS9356: 'with(...)' 요소 인수는 동적일 수 없습니다.
  • CS9357: 읽기 전용 인터페이스의 'with(...)' 요소는 비어 있어야 합니다(있는 경우).
  • CS9358: 이 컬렉션의 요소 형식은 ref 구조체 또는 ref 구조체를 허용하는 형식 매개 변수가 아닐 수 있습니다.
  • CS9359: 메서드 'method'에 대한 오버로드가 'number' 'with(...)' 요소 인수를 사용하지 않음

컴파일러에서 다음 경고를 생성할 수도 있습니다.

  • CS1062: 컬렉션 이니셜라이저 요소에 가장 적합한 오버로드된 Add 메서드는 사용되지 않습니다.
  • CS1063: 컬렉션 이니셜라이저 요소에 가장 적합한 오버로드된 Add 메서드는 사용되지 않습니다.
  • CS1064: 컬렉션 이니셜라이저 요소에 가장 적합한 오버로드된 Add 메서드는 사용되지 않습니다.
  • CS9208: 컬렉션 식으로 인해 예기치 않은 힙 할당이 발생할 수 있습니다. 명시적으로 배열을 만든 다음 최종 형식으로 변환하여 할당을 명시적으로 만드는 것이 좋습니다.
  • CS9209: '..' 스프레드 사용으로 인해 컬렉션 식에서 예기치 않은 힙 할당이 발생할 수 있습니다. 명시적으로 배열을 만든 다음 최종 형식으로 변환하여 할당을 명시적으로 만드는 것이 좋습니다.

유효한 컬렉션 이니셜라이저를 만들려면 다음 규칙을 따릅니다. 자세한 내용은 컬렉션 식을 참조하세요.

  • 동일한 이니셜라이저(CS0747)에 요소 추가와 속성 초기화를 혼합하지 마세요.
  • 중괄호가 있는 컬렉션 이니셜라이저에 하나 이상의 요소를 포함합니다(CS1920).
  • 컬렉션 형식이 구현되는지 확인합니다 IEnumerable (CS1922).
  • 컬렉션 형식(CS1925)에서만 컬렉션 이니셜라이저를 사용합니다.
  • 메서드에 Add 액세스할 수 있는지, 요소 타입과 일치하는 하나의 매개변수를 받는지, 그리고 ref 또는 out 한정자를 사용하지 않는지(CS1921, CS1954) 확인하십시오.
  • 모호한 Add 메서드 오버로드를 해결합니다(CS1950).
  • 컴파일러가 유추할 수 없는 경우 컬렉션 식에 대한 명시적 대상 형식을 제공합니다(CS9176, CS9213).
  • 매개 변수가 없는 생성자(CS9174, CS9214)를 사용하여 컬렉션 형식을 생성할 수 있는지 확인합니다.
  • 컬렉션 식에서 참조 보안을 위반할 수 있는 ref struct 형식을 사용하지 마세요(CS9203).
  • 컬렉션 식에 대한 ImmutableArray 호환 가능한 런타임 버전으로 업데이트합니다 (CS9210).
  • 스프레드 연산자 지원(GetEnumerator)에 대한 열거형 패턴(예: )을 구현합니다.
  • 컬렉션 초기화에서 순환 종속성을 방지합니다(CS9222).
  • catch 절 필터 식에서 스프레드 연산자를 사용하지 마세요(CS9332).
  • with(...) 컬렉션 식에서 요소를 먼저 배치합니다(CS9354).
  • 컬렉션 식 인수(with(...))를 지원하는 형식에서만 요소를 사용합니다.
  • 요소에서 동적 인수를 with(...) 사용하지 마세요(CS9356).
  • 읽기 전용 인터페이스 형식(CS9357)에는 빈 with()를 사용하십시오.
  • ref 구조체 형식을 지원하지 않는 컬렉션의 요소 형식으로 사용하지 마세요(CS9358).
  • 인수의 수를 with(...) 사용 가능한 생성자 오버로드(CS9359)와 일치시키십시오.

잘못된 배열 순위

  • CS0178: 잘못된 순위 지정자: ',' 또는 ']'가 필요합니다.
  • CS0650: 배열 선언자가 잘못되었습니다. 관리되는 배열을 선언하려면 차수 지정자가 변수 식별자보다 앞에 와야 합니다. 고정 크기 버퍼 필드를 선언하려면 fixed 키워드를 필드 형식 앞에 사용하세요.
  • CS1552: 배열 형식 지정자 []은 매개 변수 이름 앞에 나타나야 합니다.

배열을 올바르게 선언하려면 적절한 구문 순서를 따릅니다. 자세한 내용은 배열 이니셜라이저에 대한 배열C# 언어 사양 섹션을 참조하세요.

배열 선언은 순서대로 다음 토큰으로 구성됩니다.

  1. 배열 요소의 형식(예: int, string또는 SomeClassType)입니다.
  2. 여러 차원에 대한 배열 대괄호는 선택적으로 쉼표를 포함할 수 있습니다.
  3. 변수 이름입니다.

배열 차원을 지정할 때 다음을 사용할 수 있습니다.

  • 중괄호({}) 안의 여러 요소
  • 빈 괄호
  • 대괄호로 묶인 하나 이상의 쉼표

다음 예제에서는 유효한 배열 선언을 보여 줍니다.

int[] anArrayOfIntegers;
string[,,] threeDimensionalStringArray;

잘못된 배열 길이

  • CS0248: 음수 크기의 배열을 만들 수 없습니다.
  • CS0270: 변수 선언에서 배열 크기를 지정할 수 없습니다('new' 식을 사용하여 초기화해 보세요).
  • CS1586: 배열 만들기에는 배열 크기 또는 배열 이니셜라이저가 있어야 합니다.

길이가 유효한 배열을 만들려면 선언이 아닌 초기화 중에 크기를 지정합니다. 자세한 내용은 배열을 참조하세요.

  • 선언이 아닌 초기화의 일부로 배열 길이를 지정합니다(CS0270).
  • 배열 차원에는 양의 정수만 사용합니다(CS0248).
  • new 표현식에 크기를 제공하거나 배열 이니셜라이저(CS1586)를 사용하십시오.

다음 예에서는 두 가지 메커니즘을 모두 보여 줍니다.

int[] fiveIntegers = new int[5];
string[] weekDays = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };

잘못된 요소 형식

  • CS0611: 배열 요소는 'type' 형식일 수 없습니다.
  • CS0719: 배열 요소는 정적 형식일 수 없습니다.
  • CS0820: 암시적으로 형식이 할당된 로컬에 배열 이니셜라이저를 할당할 수 없습니다.
  • CS0826: 암시적으로 형식화된 배열에 가장 적합한 형식이 없습니다.

올바른 요소 형식의 배열을 사용하려면 다음 형식 제한을 따릅니다. 자세한 내용은 암시적으로 형식화된 지역 변수가장 일반적인 형식을 참조하세요.

  • 배열 요소 형식과 같이 System.TypedReference 제한된 형식을 System.ArgIterator 사용하지 마세요(CS0611).
  • 인스턴스를 만들 수 없으므로 클래스를 배열 요소 형식으로 사용하지 static 마세요(CS0719).
  • 식을 사용하여 암시적으로 형식화된 배열을 new 초기화합니다(CS0820).
  • 암시적으로 형식화된 배열 이니셜라이저의 모든 요소에 가장 일반적인 형식(CS0826)이 있는지 확인합니다.

다음 예제에서는 암시적으로 형식화된 배열을 선언하는 방법을 보여 줍니다.

var implicitType = new[] { 1, 2, 3 };
        
char c = 'c';
short s1 = 0;
short s2 = -0;
short s3 = 1;
short s4 = -1;

// common type is "int"
var commonType = new[] { s1, s2, s3, s4, c, 1 };

가장 일반적인 형식을 보장하려면 다음 기술 중 어느 것을 사용하세요.

  • 배열에 명시적 형식을 지정합니다.
  • 모든 배열 요소에 동일한 형식을 지정합니다.
  • 문제를 일으킬 수 있는 요소에 대해 명시적 형 변환을 제공합니다.

잘못된 배열 이니셜라이저

  • CS0623: 배열 이니셜라이저는 변수 또는 필드 이니셜라이저에서만 사용할 수 있습니다. 대신 새 식을 사용해 봅니다.
  • CS0846: 중첩 배열 이니셜라이저가 필요합니다.
  • CS1925: 컬렉션 이니셜라이저로 'type' 형식의 개체를 초기화할 수 없습니다.

이러한 오류는 잘못된 배열 이니셜라이저 구문을 나타냅니다. 자세한 내용은 배열을 참조하세요.

유효한 배열 이니셜라이저를 만들려면 다음을 수행합니다.

  • 변수 또는 필드 선언(CS0623)에서만 배열 이니셜라이저를 사용합니다. 다른 컨텍스트에서 new 식을 사용하십시오.
  • {}와 같은 요소 또는 자식 배열(CS0846) 주위에 중괄호의 균형을 맞춥니다.
  • 초기화 식이 들쭉날쭉한 배열 초기화의 배열 수와 일치하는지 확인합니다.
  • 컬렉션 이니셜라이저는 배열이나 다른 형식(CS1925)이 아닌 컬렉션 형식에서만 사용합니다.

잘못된 컬렉션 작성기

  • CS9175: 식 트리에 컬렉션 식이 포함될 수 없습니다.
  • CS9177: 'CollectionBuilderAttribute' 작성기 메서드 반환 형식은 'betterness'에 사용되는 컬렉션 형식과 일치해야 합니다.
  • CS9178: 자연 형식 'type'에 대한 대상 형식이 없습니다.
  • CS9179: 컬렉션 식 형식에는 인수 없이 호출할 수 있는 해당 생성자가 있어야 합니다.
  • CS9180: 'CollectionBuilderAttribute' 작성기 메서드는 정적 메서드여야 합니다.
  • CS9181: 'CollectionBuilderAttribute' 작성기 메서드 매개 변수 형식은 'ReadOnlySpan<{0}>' 매개 변수와 일치해야 합니다.
  • CS9182: 잘못된 'CollectionBuilderAttribute'입니다. 작성기 형식 ''{0}에서 일치하는 '{1}' 메서드를 찾을 수 없습니다.
  • CS9183: 'CollectionBuilderAttribute' 메서드 반환 형식은 'type'으로 사용할 수 있는 비 추상 인터페이스 형식이어야 합니다.
  • CS9185: 정적 형식을 형식 인수로 사용할 수 없습니다.
  • CS9186: CollectionBuilderAttribute 메서드 이름이 잘못되었습니다.
  • CS9187: 'ReadOnlySpan<{0}>' 형식의 단일 매개 변수 및 '{1}' 반환 형식을 갖는 정적 메서드로 된 예상 시그니처의 액세스 가능한 'Create' 메서드를 찾을 수 없습니다.
  • CS9188: 'scoped'는 컬렉션 식 형식 매개 변수에서 한정자로 사용할 수 없습니다.
  • CS9190: 'CollectionBuilderAttribute' 메서드 'builderMethod'는 제네릭이므로 적용할 수 없습니다.
  • CS9192: 인라인 배열 변환은 컬렉션 식과 함께 사용할 수 없습니다.
  • CS9193: 'ref' 키워드를 사용하여 인수 'argument'를 전달할 수 없습니다.
  • CS9194: 'out' 키워드를 사용하여 인수 'argument'를 전달할 수 없습니다.
  • CS9195: 'argument' 인수를 'in' 키워드와 함께 전달할 수 없습니다.
  • CS9196: 기능 '컬렉션 식'은 C# 'version'에서 사용할 수 없습니다. 언어 버전 'requiredVersion' 이상 버전을 사용하세요.
  • CS9197: 기능 '인라인 배열'은 C# '버전'에서 사용할 수 없습니다. 언어 버전 'requiredVersion' 이상 버전을 사용하세요.
  • CS9198: 'async 및 iterator 메서드에서의 ref 및 unsafe' 기능은 C# 'version'에서 사용할 수 없습니다. 언어 버전 'requiredVersion' 이상을 사용하세요.
  • CS9199: 기능 '컬렉션 식'은 C# 'version'에서 사용할 수 없습니다. 언어 버전 'requiredVersion' 이상 버전을 사용하세요.
  • CS9202: 기능 'ref readonly parameters'는 C# 'version'에서 사용할 수 없습니다. 언어 버전 'requiredVersion' 이상 버전을 사용하세요.
  • CS9208: 인라인 배열 액세스에서 'nameof' 연산자를 사용할 수 없습니다.
  • CS9209: 참조 반환 속성 'property'를 값 인수로 사용할 수 없습니다.
  • CS9211: 식은 참조로 할당되므로 'type' 형식이어야 합니다.
  • CS9212: 컬렉션 식을 고정 문의 값으로 사용할 수 없습니다.
  • CS9217: 'ref' 로컬은 'await' 또는 'yield' 경계를 통해 보존할 수 없습니다.
  • CS9218: 'paramName'은 ref 구조체이며 매개 변수의 형식일 수 없습니다.
  • CS9221: 'type' 형식은 제네릭 형식 또는 메서드 'member'에서 'parameter' 매개 변수로 사용하기 위해 ref 구조체를 허용하는 ref 구조체 또는 형식 매개 변수가 아닐 수 있습니다.
  • CS9223: 'ref' 필드가 포함된 구조체는 컬렉션 식에서 사용할 수 없습니다.
  • CS9228: ref 구조체의 변수가 아닌 선언은 허용되지 않습니다.
  • CS9232: 부분 메서드 선언에는 서명 차이가 있습니다.
  • CS9233: 'file' 한정자는 컴파일 단위의 최상위 수준에 정의된 형식에서만 사용할 수 있습니다.

컬렉션 작성기 특성을 사용하여 컬렉션 식을 올바르게 만들려면 다음 요구 사항을 따릅니다. 자세한 내용은 컬렉션 식을 참조하세요.

  • 대상 형식에 지원하는 반복 형식이 있는지 확인합니다 foreach (CS9188).
  • 제네릭 형식을 컬렉션 작성기 형식으로 사용하지 마세요(CS9185).
  • 지정된 CollectionBuilderAttribute 메서드 이름이 유효한지 확인합니다(CS9186).
  • 필수 서명과 일치하는 정적 메서드에만 적용CollectionBuilderAttribute: 컬렉션 형식을 반환하고 요소 형식(ReadOnlySpan<T>, T, CS9183, CS9187, CS9190)과 일치하는 매개 변수 를 사용합니다.
  • 반환 형식이 추상 또는 인터페이스(CS9177, CS9183)와 일치하고 일치하지 않는지 확인합니다.
  • 컬렉션 식에서 ref 필드가 있는 ref 구조체 또는 형식을 사용하지 마세요(CS9218, CS9221, CS9223, CS9228).
  • 식 트리에서 컬렉션 식을 사용하지 마세요(CS9175).
  • 컬렉션 식 및 관련 기능(CS9196, CS9197, CS9198, CS9199, CS9202)에 올바른 언어 버전을 사용합니다.

공통 언어 사양 경고

  • CS3007: 명명되지 않은 배열 형식만 다른 오버로드된 'method' 메서드는 CLS 규격이 아닙니다.
  • CS3016: 특성 인수로서의 배열은 CLS를 준수하지 않습니다.

배열을 사용하여 CLS 규격 코드를 작성하려면 다음 지침을 따릅니다. 자세한 내용은 언어 독립성(Language Independence)을 참조하세요.

  • 배열 요소 형식에서만 다른 오버로드된 메서드를 만들지 마세요(CS3007).
  • 배열을 특성 인수로 사용하지 마세요(CS3016).

CS3007은 오버로드된 메서드에서 인수로 가변 배열을 사용하고 메서드 시그니처에서 배열의 요소 형식만 다른 경우에 발생합니다. 이 오류를 방지하려면 가변 배열 대신 직사각형 배열을 사용하는 것이 좋습니다. 또는 CLS 규정 준수가 필요하지 않은 경우 CLSCompliantAttribute 특성을 제거합니다. CLS 규격에 대한 자세한 내용은 언어 독립성 및 언어 독립적 구성 요소를 참조하세요.

CS3016은 배열을 특성에 전달하는 것이 CLS(공용 언어 사양)를 준수하지 않음을 나타냅니다. CLS 규격에 대한 자세한 내용은 언어 독립성 및 언어 독립적 구성 요소를 참조하세요.