Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在两个哈希集中搜索_C#_Search_Hashset - Fatal编程技术网

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;
}