2015-06-22 3 views
-2

У меня есть метод, очень похожий на пример ниже, и он не позволит мне outoutItem.C# - Не удается передать Out с методом переопределения

public override bool myMethod(string item, out string outItem) 
    { 
     outItem = ""; 
     return true; 
    } 

Он продолжает давать следующее сообщение об ошибке:

"no suitable method found to override"

Если удалить override, ошибка уходит. Как я могу исправить эту проблему?

+6

'' У меня есть метод, очень похожий на .. "', Чтобы переопределить, подпись метода должна быть точной, а не * подобной *. – Habib

+0

Имеет ли суперкласс класса, содержащего этот метод, этот точный метод (имя и подпись должны совпадать)? Если нет, это не переопределение. – Glorfindel

+0

Удалить переопределение? Что это такое? –

ответ

4

Похоже, что метод в базовом классе не отмечает этот параметр как out. Вы должны соответствовать подписи базового класса. Если вы можете изменить базовый класс, чтобы отметить метод как out, тогда вы можете пометить его как таковой и на производном типе. Если вы не можете, то вы не сможете переопределить этот метод, вместо этого вам придется создать новый метод.

+0

Похоже, он работает. Благодаря!! – BlueFox

4

Похоже, что подпись базового класса myMethod не использует out для второго параметра. Вы не можете просто добавить это, потому что он меняет подпись метода. Если у вас есть контроль над базовым классом, вы можете добавить его, но если нет, вам нужно будет удалить переопределение.

+0

Обратите внимание, что если вы просто удалите переопределение, этот метод будет * отличным от * в базовом классе, то есть если у вас есть что-то вроде MyBase b = new MyConcrete(); bool result = b.myMethod («hello», out outItem); 'он не будет компилироваться, поскольку новый метод не определен в базовом классе. –

+0

@EricJ. Да, я это понимаю. Но если он не может изменить базовый класс, его варианты довольно ограничены, и он не сможет делать то, что хочет. – Andy

+0

Примечание для него больше, чтобы убедиться, что он осознает, что это новый метод. –