Как уже указал Одед в своем ответе, невозможно перегрузить метод, если единственным отличием является тип возвращаемого значения .
public override Stocks[] Search(string Field,string Param){ //some code}
public override Stocks Search(string Field, string Param){//some code}
Подумайте об этом: как компилятор должен знать, какой вариант метода вызывать? По-видимому, это зависит от вашего результата поиска, и, очевидно, компилятор не может знать об этом заранее.
Фактически, то, что вы хотите, это одна функция, которая имеет два возможных типа возврата. То, что вы не хотите, - это два отдельных метода , потому что тогда вам придется заранее решить, какой из них вызвать. Это явно неправильный подход.
Одно из решений - всегда возвращать массив ; если найден только один объект Stocks
, вы возвращаете массив размером 1.