У меня есть несколько подобных методов, например, например. CalculatePoint (...) и CalculateListOfPoints (...). Иногда им может не удаться, и нужно указать это вызывающему. Для CalculateListOfPoints, который возвращает общий список, я мог бы вернуть пустой список и потребовать, чтобы вызывающий вызывал это; однако Point - это тип значения, поэтому я не могу вернуть туда нуль.
В идеале я хотел бы, чтобы методы выглядели одинаково; одним из решений может быть их определение как
public Point CalculatePoint(... out Boolean boSuccess);
public List<Point> CalculateListOfPoints(... out Boolean boSuccess);
или, альтернативно, вернуть точку? для CalculatePoint и вернуть значение null для указания отказа. Это означало бы необходимость возвращаться к типу с нулевым значением, что кажется чрезмерным.
Другим маршрутом будет возврат логического boSuccess, результат (Point или List) в качестве параметра "out" и вызов их TryToCalculatePoint или что-то...
Что такое лучшая практика?
Изменить: я не хочу использовать Исключения для управления потоком! Иногда ожидается отказ.