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