C# 일반 개방형 목록 초기화 실패: 해결책
Data<T>
과 같은 일반 개방형 유형 및 해당 폐쇄형 생성 유형(예: StringData
, DecimalData
)으로 작업할 때 List<Data>
을 사용하여 목록을 생성하려고 하면 컴파일러 오류가 발생합니다. '데이터'에는 1개의 유형 인수가 필요합니다." 이는 C#이 개방형 일반 형식에 대해 다이아몬드 연산자를 지원하지 않기 때문입니다. 구체적인 유형 인수가 항상 필요합니다.
문제 설명
목록을 생성하려면 컴파일러가 Data<T>
클래스 내의 특정 유형을 알아야 합니다. List<Data>
은 모호합니다. T
가 나타내는 유형이 무엇인지 지정하지 않습니다.
효과적인 솔루션
이 문제를 해결하기 위한 두 가지 실용적인 접근 방식은 다음과 같습니다.
인터페이스 구현: IData
및 해당 파생 유형이 구현하는 인터페이스(예: Data<T>
)를 만듭니다. 그런 다음 목록을 List<IData>
으로 선언하세요. 이는 다형성을 활용하여 동일한 목록에 다양한 Data<T>
유형의 인스턴스를 저장할 수 있게 해줍니다.
추상 기본 클래스: DataBase
에 대한 추상 기본 클래스(예: Data<T>
)를 정의합니다. 이 기본 클래스에서 구체적인 유형을 파생시킵니다. 그런 다음 List<DataBase>
목록을 만들 수 있습니다. 이는 강력한 타이핑을 제공하지만 인터페이스 접근 방식에 비해 일반성이 떨어집니다.
고려사항
두 가지 방법 모두 어느 정도 디자인이 복잡해집니다. 선택은 애플리케이션의 특정 요구 사항에 따라 달라집니다. 인터페이스는 더 큰 유연성을 제공하는 반면 추상 기본 클래스는 보다 구조화된 접근 방식을 제공합니다.
추가 자료
C#의 제네릭, 변형 및 다형성에 대한 자세한 내용은 다음 리소스를 참조하세요.
위 내용은 C#에서 일반 개방형을 사용하면 목록 초기화가 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!