返回多个项目

时间:2014-01-23 16:43:23

标签: c# function boolean

如何让一个bool函数返回bool旁边的东西?一个例子是:

public bool MyBool(List<Item> a, string lookfor)
{

  foreach(Item it in a)
  {

    if(it.itemname == look for)
    {
      //Also return the item that was found!
      return true;
    }

  }
  return false;

}

所以基本上如果事情是真的,我也想把这个项目和bool一起归还。这可能吗?

3 个答案:

答案 0 :(得分:4)

基本上有两种选择。

第一个,使用out参数修饰符(more info on MSDN

返回结果
public bool MyBool(List<Item> a, string lookfor, out Item result)

或第二个,将结果打包到Tuple

public Tuple<bool, Item> MyBool(List<Item> a, string lookfor)

答案 1 :(得分:2)

您需要在调用中传递out参数,out参数应由被调用方法设置。所以,例如,你可以有这样的东西

public bool MyBool(List<Item> a, string lookfor, out Item found)
{
    found = a.SingleOrDefault(it => it.itemname == lookfor);
    return found != null;
}

在您可以编写的调用代码中

Item it;
if(ClassInstanceWithMethod.MyBool(ListOfItems, "itemToSearchFor", out it))
    Console.WriteLine(it.itemname);

但是,我建议将此方法的名称更改为更明显的内容 (TryGetValue似乎非常合适)

答案 2 :(得分:1)

您可以在参数上使用out keyword。以下是来自Dictionary<TKey,TValue>

的真实示例
public bool TryGetValue(TKey key, out TValue value)
{
    int index = this.FindEntry(key);
    if (index >= 0)
    {
        value = this.entries[index].value;
        return true;
    }
    value = default(TValue);
    return false;
}