加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 从方法返回多个值

发布时间:2020-12-15 08:08:49 所属栏目:百科 来源:网络整理
导读:我可以想到以下几种方法从一个方法返回多个值(以及一个分成两个方法的方法) private bool IsCarFaulty(Car car,out string fault){ fault = string.Empty; return false;} private Tuplebool,string IsCarFaulty(Car car){ return Tuple.Create(false,string
我可以想到以下几种方法从一个方法返回多个值(以及一个分成两个方法的方法)
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;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读