- CS8343:
ref structs인터페이스를 구현할 수 없습니다. - CS8344:
foreach문은 형식이ref struct를 허용하는ref struct또는 형식 매개 변수이므로 비동기 또는 반복기 메서드의 열거자에서 작동할 수 없습니다. - CS8345: 필드 또는 자동 구현 속성은
ref struct의 인스턴스 멤버인 경우 외에는 형식일 수 없습니다. - CS9048:
scoped한정자는 ref 및ref struct값에만 사용할 수 있습니다. - CS9050:
ref필드는ref struct를 참조할 수 없습니다. - CS9059: ref 필드는 ref struct에서만 선언할 수 있습니다.
- CS9241: 'ref struct'가 이미 지정되었습니다.
- CS9242: 'allows' 제약 조건 절은 마지막으로 지정된 제약 조건이어야 합니다.
- CS9243: 다른 제약 조건에서 클래스로 알려진 형식 매개 변수에 대한 ref struct를 허용할 수 없습니다.
- CS9244: 형식은
ref struct가 아니거나 제네릭 형식이나 메서드에서 매개 변수로 사용하기 위해 ref struct를 허용하는 형식 매개 변수가 될 수 없습니다. - CS9245: 형식이
ref struct형식에 대한 인터페이스 멤버를 구현할 수 없습니다. - CS9246: ref struct를 허용하는 형식 매개 변수에서 비가상 인스턴스 인터페이스 멤버에 액세스할 수 없습니다.
- CS9247: foreach 문은 ref struct를 허용하는 형식 매개 변수이고 컴파일 시간에
IDisposable을 구현하는 방법을 알 수 없기 때문에 형식의 열거자에서 작동할 수 없습니다. - CS9267: 반복기의 요소 형식이 ref 구조체 또는 ref 구조체를 허용하는 형식 매개 변수가 아닐 수 있습니다.
ref 안전 위반
- CS8345: 필드 또는 자동 구현 속성은
ref struct의 인스턴스 멤버인 경우 외에는 형식일 수 없습니다. - CS9048:
scoped한정자는 ref 및ref struct값에만 사용할 수 있습니다. - CS9050:
ref필드는ref struct를 참조할 수 없습니다. - CS9059:
ref필드는ref struct에서만 선언할 수 있습니다.
ref struct 형식에는 ref 필드가 포함될 수 있습니다. 다른 형식은 허용된 ref 필드가 아닙니다. 컴파일러는 ref struct 형식의 인스턴스에 ref 안전 규칙을 적용하기 위해 ref struct 형식의 선언 및 사용에 제한을 적용합니다.
- 형식만
ref struct자동으로 구현된 속성을 포함할ref수 있습니다. ref struct형식 또는ref변수만scoped한정자를 가질 수 있습니다.ref필드는ref struct형식에서만 선언될 수 있습니다.ref필드는ref struct형식을 참조할 수 없습니다.
이러한 규칙 중 하나라도 위반하면 나열된 오류 중 하나가 발생합니다. 해당 언어 기능을 사용하려는 경우 해당 형식을 ref struct로 변환합니다. 그렇지 않으면 허용되지 않는 구문을 제거합니다.
ref struct 인터페이스 구현
- CS8343:
ref structs는 인터페이스를 구현할 수 없습니다. - CS8344:
foreach문은 형식이ref struct를 허용하는ref struct또는 형식 매개 변수이므로 비동기 또는 반복기 메서드의 열거자에서 작동할 수 없습니다. - CS9241: 'ref struct'가 이미 지정되었습니다.
- CS9242: 'allows' 제약 조건 절은 마지막으로 지정된 제약 조건이어야 합니다.
- CS9243: 다른 제약 조건에서 클래스로 알려진 형식 매개 변수에 대한 ref struct를 허용할 수 없습니다.
- CS9244: 형식은
ref struct가 아니거나 제네릭 형식이나 메서드에서 매개 변수로 사용하기 위해 ref struct를 허용하는 형식 매개 변수가 될 수 없습니다. - CS9245: 형식이
ref struct형식에 대한 인터페이스 멤버를 구현할 수 없습니다. - CS9246: ref struct를 허용하는 형식 매개 변수에서 비가상 인스턴스 인터페이스 멤버에 액세스할 수 없습니다.
- CS9247: foreach 문은 ref struct를 허용하는 형식 매개 변수이고 컴파일 시간에
IDisposable을 구현하는 방법을 알 수 없기 때문에 형식의 열거자에서 작동할 수 없습니다. - CS9267: 반복기의 요소 형식이 ref 구조체 또는 ref 구조체를 허용하는 형식 매개 변수가 아닐 수 있습니다.
C# 13 이전에는 ref struct 형식이 인터페이스를 구현할 수 없었습니다. 컴파일러는 CS8343을 생성합니다. C# 13부터 ref struct 형식은 다음 규칙에 따라 인터페이스를 구현할 수 있습니다.
ref struct는 자신이 구현하는 인터페이스의 인스턴스로 변환될 수 없습니다. 이 제한에는 매개 변수가 인터페이스 형식인 경우ref struct형식을 인수로 사용할 때의 암묵적 변환이 포함됩니다. 이 변환은 ref 안전을 위반하는 boxing 변환으로 이어집니다.- 인터페이스 를 구현하는
ref struct는 모든 인터페이스 멤버를 구현해야 합니다.ref struct는 인터페이스에 기본 구현이 포함된 멤버를 구현해야 합니다.
C# 13부터 ref struct를 제네릭 형식 매개 변수의 형식 인수로 사용할 수 있습니다. 단, 제네릭 형식 매개 변수에 allows ref struct 안티 제약 조건이 있는 경우에만 가능합니다. allows ref struct 안티 제약 조건을 사용하는 경우 다음 규칙을 따라야 합니다.
ref struct가 형식 인수로 사용되고 형식 매개 변수 는 반드시allows ref struct안티 제약 조건을 가져야 합니다. -allows ref struct안티 제약 조건은 해당 매개 변수에 대한where절의 마지막에 있어야 합니다.- 인스턴스를 사용하는 경우 형식 매개 변수는 ref 안전 규칙을 따라야 합니다.
- 형식일 수 있는 A
ref struct또는 형식 인수는ref struct반복기 메서드의 요소 형식으로 사용할 수 없습니다.
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET