我有几种类似的方法,例如。 CalculatePoint(...)和CalculateListOfPoints(...)。有时,它们可能不会成功,并且需要向 call 者表明这一点。对于返回通用列表的CalculateListOfPoints,我可以返回一个空列表,并要求调用者进行检查。但是Point是一个值类型,因此我不能在那里返回null。

理想情况下,我希望这些方法“看起来”相似。一种解决方案是将它们定义为

public Point CalculatePoint(... out Boolean boSuccess);
public List<Point> CalculateListOfPoints(... out Boolean boSuccess);

或者返回一个点?为CalculatePoint,并返回null指示失败。但这意味着必须强制转换为不可为null的类型,这似乎过多。

另一种方法是返回 bool(boolean) boSuccess,将结果(点或列表)作为“输出”参数,然后将它们命名为TryToCalculatePoint或其他东西。

什么是最佳做法?

编辑:我不想使用异常进行流控制!有时可能会失败。

最佳答案

就个人而言,我想我会使用与TryParse()相同的想法:使用out参数输出实际值,并返回一个 bool(boolean) 值,指示调用是否成功
public bool CalculatePoint(... out Point result);
我不喜欢将异常用于“正常”行为(如果您希望该功能不适用于某些条目)。

关于c# - 如何指示方法不成功,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/161822/

10-12 06:29