错误并非所有代码路径都返回值?

时间:2015-02-08 06:14:03

标签: c# .net vb.net

我有以下功能但是我收到以下错误:并非所有代码路径都返回值。

public Int64 id(string fd, string tb)
{
    if (con.State == ConnectionState.Open)
    {
        con.Close();
    else
    {
        con.Open();
    }

    SqlCommand cmd = new SqlCommand("SELECT MAX (" + fd + ") FROM " + tb + "", con);
    cmd.CommandType = CommandType.Text;
    if (con.State == ConnectionState.Closed)
    {
        con.Open();
        Int64 I = Convert.ToInt64((cmd.ExecuteScalar().Equals(DBNull.Value) ? 0 : cmd.ExecuteScalar())) + 10;
        return I;
    }                
}

请帮助我理解为什么会发生这种情况以及如何纠正它。

2 个答案:

答案 0 :(得分:1)

这里的问题非常简单。只有在以下条件下才返回值:" con.State == ConnectionState.Closed"是真的。否则就没有返回值,这就是编译器告诉你的。

答案 1 :(得分:0)

public Int64 id(string fd, string tb)
{
    Int64 I = 0;

    if (con.State == ConnectionState.Open)
    {
        con.Close();
    else
    {
        con.Open();
    }

    SqlCommand cmd = new SqlCommand("SELECT MAX (" + fd + ") FROM " + tb + "", con);
    cmd.CommandType = CommandType.Text;
    if (con.State == ConnectionState.Closed)
    {
        con.Open();
        I = Convert.ToInt64((cmd.ExecuteScalar().Equals(DBNull.Value) ? 0 : cmd.ExecuteScalar())) + 10;
    }
    return I; 
}

return I 语句位于 if(con.State == ConnectionState.Closed)块内。这意味着它不会被称为con.State没有关闭,函数也不会返回任何东西。我在函数的顶部初始化为0,因此如果未运行SQL查询,将返回此值。