C# 并非所有代码路径都返回值c';

C# 并非所有代码路径都返回值c';,c#,C#,我试图使用下面的代码并得到上面的错误。我绝对是一个新手,所以可能是一些简单的东西。我猜这与if(一个D准直器)有关。不过,我需要检查碰撞器是否存在,以使该语句正常工作 private bool CheckIndex(int cIndex, bool a2DCollider) { if (a2DCollider) { if (floatingObjects2D.Count <= cIndex)

我试图使用下面的代码并得到上面的错误。我绝对是一个新手,所以可能是一些简单的东西。我猜这与if(一个D准直器)有关。不过,我需要检查碰撞器是否存在,以使该语句正常工作

     private bool CheckIndex(int cIndex, bool a2DCollider)
    {
        if (a2DCollider)
        {
            if (floatingObjects2D.Count <= cIndex)
            {
                return true;
            }
            if (floatingObjects2D[cIndex] == null)
            {
                floatingObjects2D.RemoveAt(cIndex);
                return true;
            }
        }
        else
        {
            if (floatingObjects3D.Count <= cIndex)
                return true;
            if (floatingObjects3D[cIndex] == null)
            {
                floatingObjects3D.RemoveAt(cIndex);
                return true;
            }
        }


    }
private bool-CheckIndex(int-cIndex,bool-a2DCollider)
{
if(A2D准直器)
{

if(floatingObjects2D.Count问题在于
if-else
块中的double
if
-语句

如果
a2DCollider
true
但两个内部
语句的条件为“false”,则函数不会返回任何内容

此外,如果
a2DCollider
false
,但如果
-语句均为
true
,则函数不会返回任何内容

您可以通过在
if else
下添加
return false
行轻松解决此问题,如下所示:

private bool CheckIndex(int cIndex, bool a2DCollider)
{
    if (a2DCollider)
    {
        if (floatingObjects2D.Count <= cIndex)
        {
            return true;
        }
        if (floatingObjects2D[cIndex] == null)
        {
            floatingObjects2D.RemoveAt(cIndex);
            return true;
        }
    }
    else
    {
        if (floatingObjects3D.Count <= cIndex)
            return true;
        if (floatingObjects3D[cIndex] == null)
        {
            floatingObjects3D.RemoveAt(cIndex);
            return true;
        }
    }
    return false;
}

问题在于
if-else
块中的double
if
-语句

如果
a2DCollider
true
但两个内部
语句的条件为“false”,则函数不会返回任何内容

此外,如果
a2DCollider
false
,但如果
-语句均为
true
,则函数不会返回任何内容

您可以通过在
if else
下添加
return false
行轻松解决此问题,如下所示:

private bool CheckIndex(int cIndex, bool a2DCollider)
{
    if (a2DCollider)
    {
        if (floatingObjects2D.Count <= cIndex)
        {
            return true;
        }
        if (floatingObjects2D[cIndex] == null)
        {
            floatingObjects2D.RemoveAt(cIndex);
            return true;
        }
    }
    else
    {
        if (floatingObjects3D.Count <= cIndex)
            return true;
        if (floatingObjects3D[cIndex] == null)
        {
            floatingObjects3D.RemoveAt(cIndex);
            return true;
        }
    }
    return false;
}

你把事情弄得太复杂了,只需在代码末尾返回即可

private bool CheckIndex(int cIndex, bool a2DCollider)
{
    if (a2DCollider && floatingObjects2D[cIndex] == null)
       floatingObjects2D.RemoveAt(cIndex);          
    else if (floatingObjects3D[cIndex] == null)               
       floatingObjects3D.RemoveAt(cIndex)            
    return true;
}

你把事情弄得太复杂了,只需在代码末尾返回即可

private bool CheckIndex(int cIndex, bool a2DCollider)
{
    if (a2DCollider && floatingObjects2D[cIndex] == null)
       floatingObjects2D.RemoveAt(cIndex);          
    else if (floatingObjects3D[cIndex] == null)               
       floatingObjects3D.RemoveAt(cIndex)            
    return true;
}

如果'floatingObjects2D[cIndex]!=null'会发生什么?您需要一个else

如果'floatingObjects2D[cIndex]会发生什么!=null'?您需要一个else

您在
if-else
语句中运行时,没有涵盖您为函数提供的参数的所有可能情况。您需要使用
else
命令程序在不满足此条件时该怎么办:

private bool CheckIndex(int cIndex, bool a2DCollider)
    {
        if (a2DCollider)
        {
            if (floatingObjects2D.Count <= cIndex)
                return true;
            if (floatingObjects2D[cIndex] == null)
            {
                floatingObjects2D.RemoveAt(cIndex);
                return true;
            }
            else
                // return something
        }
        else
        {
            if (floatingObjects3D.Count <= cIndex)
                return true;
            if (floatingObjects3D[cIndex] == null)
            {
                floatingObjects3D.RemoveAt(cIndex);
                return true;
            }
            else
                // return something
        }
    }

if-else
语句中运行时,您没有涵盖为函数提供的参数的所有可能情况。您需要使用
else
命令告诉程序如果不满足此条件该怎么办:

private bool CheckIndex(int cIndex, bool a2DCollider)
    {
        if (a2DCollider)
        {
            if (floatingObjects2D.Count <= cIndex)
                return true;
            if (floatingObjects2D[cIndex] == null)
            {
                floatingObjects2D.RemoveAt(cIndex);
                return true;
            }
            else
                // return something
        }
        else
        {
            if (floatingObjects3D.Count <= cIndex)
                return true;
            if (floatingObjects3D[cIndex] == null)
            {
                floatingObjects3D.RemoveAt(cIndex);
                return true;
            }
            else
                // return something
        }
    }

如果
a2DCollider
true
floatingObjects2D.Count>cIndex
,它应该返回什么?因为您只返回true,也许您想在所有其他情况下返回false?如果
a2DCollider
true
floatingObjects2D.Count>cIndex
,它应该返回什么?因为您只返回如果返回true,那么在所有其他情况下,您可能打算返回false?是的:o),有人告诉我把return false放在Unity论坛的最后,效果很好。谢谢大家的快速回答。是的:哦),有人告诉我把return false放在Unity论坛的最后,效果很好。谢谢大家的快速回答。