2013-10-03 2 views
1

я получаю эту ошибкуНе найдено подходящего метода для переопределения?

Dev_xsc_Build.BigEndianBinaryReader.ReadInt16()': no suitable method found to override 

Но я не уверен, где я неправильно с

public override short ReadInt16() 
    { 
     byte[] byteBuffer = base.ReadBytes(2); 
     return (short)((byteBuffer[0] << 8) | byteBuffer[1]); 
    } 

Любая помощь, пожалуйста?

+1

Что произойдет, если вы удалите ключевое слово переопределения? – DaveDev

+0

Что такое объявление метода, который вы пытаетесь переопределить? – egrunin

+0

Каков тип 'Dev_xsc_Build.BigEndianBinaryReader' и какой базовый тип? Если он получен из 'BinaryReader', он должен работать. – pescolino

ответ

1

Вы говорите, чтобы переопределить виртуальный метод: public **override** short ReadInt16(). Это требует, чтобы вы наследовали от класса, который содержит виртуальный метод, соответствующий этой декларации.

В вашем случае базовый класс не предоставляет виртуальный метод, который соответствует. Вы должны просто удалить ключевое слово override:

public short ReadInt16() 
{ 
    byte[] byteBuffer = base.ReadBytes(2); 
    return (short)((byteBuffer[0] << 8) | byteBuffer[1]); 
} 
+0

Должен ли он добавить ключевое слово 'new', чтобы скрыть существующее определение? – Harrison

+0

@ Харрисон Не нужно. без 'new' также будет тень базового класса' method'. ключевое слово 'new' просто для того, чтобы подавить предупреждение –

+0

@Harrison Я подозреваю, что никакого существующего определения нет. Если бы было, вероятно, не было бы причин переопределять его вообще ... –

Смежные вопросы