C# 在两个哈希集中搜索
我有这个方法:C# 在两个哈希集中搜索,c#,search,hashset,C#,Search,Hashset,我有这个方法: bool CheckIfAvailable(HashSet<int> hayStack1, HashSet<int> hayStack2, int needle) { } bool CheckIfAvailable(HashSet-hayStack1、HashSet-hayStack2、int-needle){ } 我试着做以下事情:如果hayStack1和hayStack2都是null,那么方法应该返回true,如果其中一个不是null,那么指针应该
bool CheckIfAvailable(HashSet<int> hayStack1, HashSet<int> hayStack2, int needle) {
}
bool CheckIfAvailable(HashSet-hayStack1、HashSet-hayStack2、int-needle){
}
我试着做以下事情:如果hayStack1
和hayStack2
都是null
,那么方法应该返回true
,如果其中一个不是null
,那么指针应该在里面返回true
,如果两者都不是null
,则指针可以位于其中一个,也可以同时位于两个true
我可以这样做,但我的方法非常混乱,有没有优雅的方法可以做到这一点?bool CheckIfAvailable(HashSet-hayStack1、HashSet-hayStack2、int-needle)
bool CheckIfAvailable(HashSet<int> hayStack1, HashSet<int> hayStack2, int needle)
{
if(hayStack1 == null && hayStack2 == null)
{
return true;
}
else if(hayStack1 != null && hayStack1.Contains(needle))
{
return true;
}
else if(hayStack2 != null && hayStack2.Contains(needle))
{
return true;
}
return false;
}
{
if(hayStack1==null&&hayStack2==null)
{
返回true;
}
else if(hayStack1!=null&&hayStack1.Contains(指针))
{
返回true;
}
else if(hayStack2!=null&&hayStack2.Contains(指针))
{
返回true;
}
返回false;
}
或
bool CheckIfAvailable(HashSet-hayStack1、HashSet-hayStack2、int-needle)
{
bool setsAreNull=hayStack1==null和&hayStack2==null;
bool hayStack1 containsneedle=hayStack1!=null&&hayStack1.Contains(指针);
bool hayStack2 containsneedle=hayStack2!=null&&hayStack2.Contains(指针);
返回设置arenull | | haystack1 containsneedle | | haystack2 containsneedle;
}
不错。你能进一步解释为什么返回s2==true代码>是否有必要?它与并发性有关吗?@TadijaBagarić这适用于s1==false和s2==true的情况。@TadijaBagarić如果s1
变为false,表达式将变为false,而不查看s2
。因此有必要检查s2==true
Ah right。c#6.0的酷炫使用——我的工作安全部门期待着使用这种代码风格!
bool CheckIfAvailable(HashSet<int> hayStack1, HashSet<int> hayStack2, int needle)
{
bool setsAreNull = hayStack1 == null && hayStack2 == null;
bool hayStack1ContainsNeedle = hayStack1 != null && hayStack1.Contains(needle);
bool hayStack2ContainsNeedle = hayStack2 != null && hayStack2.Contains(needle);
return setsAreNull || hayStack1ContainsNeedle || hayStack2ContainsNeedle ;
}
bool CheckIfAvailable(HashSet<int> hayStack1, HashSet<int> hayStack2, int needle)
{
bool? s1 = hayStack1?.Contains(needle);
bool? s2 = hayStack2?.Contains(needle);
if (s1 ?? s2 ?? true) return true;
return s2 == true;
}
bool CheckIfAvailable(HashSet<int> hayStack1, HashSet<int> hayStack2, int needle)
{
bool? s1 = hayStack1?.Contains(needle);
bool? s2 = hayStack2?.Contains(needle);
return (s1 ?? s2 ?? true) || s2 == true;
}