我可以想到以下几种方法从一个方法返回多个值(以及一个分成两个方法的方法)
private bool IsCarFaulty(Car car,out string fault) { fault = string.Empty; return false; }
private Tuple<bool,string> IsCarFaulty(Car car) { return Tuple.Create(false,string.Empty); }
private ResultAndMessage IsCarFaulty(Car car) { return new ResultAndMessage(false,string.Empty); }
private bool IsCarFaulty(Car car) { return false; } private string GetCarFault(Car car) { return string.Empty; }
基本上我的问题是,是否存在一个优于另一个的情况?如果我以int.TryParse为例.它使用out参数,但不能将它分成两个方法,CanParse和Parse也可以正常工作,如果不是更好的话.
解决方法
Basically my question is,are there situations where one is preferable over the other?
当然,但我不认为有适用于所有情况的一般规则.只需根据具体情况选择您感觉更舒服的那个.
我通常会避免使用参数,因为它们与Linq不能很好地配合.
If I take int.TryParse for an example. It uses an out parameter,but couldn’t splitting it into two methods CanParse and Parse work just as well,if not better.
当然,它可以工作,但这意味着字符串将被解析两次,这是次优的.
当引入int.TryParse时,C#没有可空类型(编辑:实际上它确实如此);现在你可以写一个像这样的方法:
public static int? TryParseInt32(string s) { int i; if (int.TryParse(s,out i)) return i; return null; }