获取警告检测到无法访问的代码

时间:2014-02-02 18:33:52

标签: c#

这是我的代码,它会为flag = false;

生成警告
public bool Check_Contact(string username)
{
    bool flag=false;
    bool str;
    IEnumerator enumerator = this.All_Contacts_dt.Rows.GetEnumerator();
    try
    {
        do
        {
            str = enumerator.MoveNext();
            if (str)
            {
                DataRow current = (DataRow)enumerator.Current;
                str = !(current["Username"].ToString() == username);
            }
            else
            {
                flag = false;
                return flag;
            }
        }
        while (str);
        flag = true;
        return flag;
    }
    finally
    {
        IDisposable disposable = enumerator as IDisposable;
        str = disposable == null;
        if (!str)
        {
            disposable.Dispose();
        }
    }
    flag = false;
    return flag;
}

代码中的问题是什么?感谢

2 个答案:

答案 0 :(得分:7)

问题是确实永远不会达到flag = false;。您的try块以返回结束。所以可能性是:

  • 您的代码已成功执行,因此无法达到return语句。在finally块运行后退出该方法。
  • return声明之前有一个例外。运行finally块,并将异常传递给调用方法,直到找到匹配的catch块。
  • finally块中有一个例外。停止执行该块,并将异常传递给调用方法,直到找到匹配的catch块。

因此,无论如何,都不会达到flag = false;

答案 1 :(得分:3)

代码执行离开try块的唯一方法是通过其return语句,这意味着finally块后面的任何代码都不会被执行。

try
{
    // ...
    return flag;   // Control returns to caller here (after executing finally block).
}
finally
{
    // ...
}

// Execution never reaches this point.
flag = false;
return flag;