如何让一个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一起归还。这可能吗?
答案 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;
}