As Oded already points out in his answer, it is not possible to overload a method when the only difference is the return type.
public override Stocks[] Search(string Field,string Param){ //some code}
public override Stocks Search(string Field, string Param){//some code}
Think about it: How should the compiler know which method variant to call? This apparently depends on your search result, and obviously the compiler can't know that in advance.
In fact, what you want is one function which has two possible return types. What you don't want is two separate methods, because you'd then have to decide up-front which one to call. This is obviously the wrong approach here.
One solution is to always return an array; in case where only one Stocks
object is found, you return an array of size 1.