추상적 인 멤버를 상속? 매개 변수의 유형은 int 여야합니다. 컴파일러는 당신이 과부하를 선언하는 것을 기대하는 다른 서명을 기대구현 내가 클래스가 말 일반
class B : A<int> {
public override void foo(int a) {
}
override
없이 :
추상적 인 멤버를 상속? 매개 변수의 유형은 int 여야합니다. 컴파일러는 당신이 과부하를 선언하는 것을 기대하는 다른 서명을 기대구현 내가 클래스가 말 일반
class B : A<int> {
public override void foo(int a) {
}
override
없이 :
, 당신은 override 키워드 누락 :
당신은 override
키워드가 누락되었습니다. 다른 사람들이 지적했듯이
public override void foo(int a) {;}
이
당신은 override
키워드를 사용해야합니다.
그러나이 패턴에 매우주의해야합니다. 조심하지 않으면 상처를 입을 수 있습니다.
class B<T>
{
public virtual void M(T t) {}
public virtual void M(int x) {}
}
class D : B<int>
{
public override void M(int x) {}
}
어느 쪽이 우선합니까?
이 상황에서 아무런 문제가 발생하지 않습니다. CLR 사양에서는 두 가지 메서드 서명이 일반 구성에서 통일되는 상황에 처하지 않도록 권장합니다. 좋은 조언.
abstract class N<T>
{
public abstract void foo(T a);
}
class B : N<int>
{
public override void foo(int a)
{
}
}
어리석은 예라고 생각할 수 있습니다. 그러나 당신이 양방향 사전을 구현하고 있다고 상상해보십시오. 'class BiDic {public T this [U u] {get {...}} public U this [Tt] {get {...}}}'- 이렇게하면 끝납니다. 'T'와 'U'에 대해 같은 유형을 사용하지 않는 한 –
configurator