나는 자바 개발자이며 Java와는 달리 C#에서 추상 클래스를 확장하는 데있어 몇 가지 차이점을 발견했다. 나는 C# 개발자가 어떻게 다음과 같은 결론을 얻었 을까하고 궁금해했다.C에서 추상 클래스 확장하기 #
1)
public abstract class A {
public abstract List<B> List();
}
public class BList : List<B> {
}
public abstract class C : A {
public abstract BList List();
}
Covarience
그래서 위의 계층 구조에서, 그것은 무엇을 반환과 호환되는 형식을 반환하는 C에서 covarience있다. 그러나 이것은 Visual Studio에서 오류가 발생합니다. C#에서 공백 반환 형식을 지정하는 방법이 있습니까? 속성public abstract class A {
public abstract String Name { get; }
}
public abstract class B : A {
public abstract String Name { get; set }
}
에 세터를 추가
2) 여기서 컴파일러는 숨어 불평. 어떤 제안?
유일한 방법이 아니면 인터페이스를 사용하지 않는 것이 좋습니다.
C#은 가상 메서드를 재정의 할 때 반환 유형 공분산을 지원하지 않습니다. 죄송합니다! –