并非所有代码路径都返回c#中的值

Kar*_*thi 0 c# c#-4.0

public int Queue()
    {
        using (Entities server = new Entities())
        {
            var ServerId1 = (from serverID in server.AppPM_Patches
                             where serverID.PatchStatus == "NotStarted" && serverID.ServerId == 1
                             select serverID.ServerId).Count();
            var ServerId2 = (from serverID in server.AppPM_Patches
                             where serverID.PatchStatus == "NotStarted" && serverID.ServerId == 2
                             select serverID.ServerId).Count();
            var ServerId3 = (from serverID in server.AppPM_Patches
                             where serverID.PatchStatus == "NotStarted" && serverID.ServerId == 3
                             select serverID.ServerId).Count();
            if (ServerId1 == 0 && ServerId2 == 0 && ServerId3 == 0)
            {
                return ServerId1;//Convert.ToInt32(ServerId1);

            }
            else if (ServerId1 == 1 && ServerId2 == 0 && ServerId3 == 0)
            {
                return ServerId2;
            }
            else if (ServerId1 == 1 && ServerId2 == 1 && ServerId3 == 0)
            {
                return ServerId3;
            }
            else if (ServerId1 > ServerId2 && ServerId1 > ServerId3)
            {
                if (ServerId2 > ServerId3)
                {
                    return ServerId3;
                }
                else
                {
                    return ServerId2;
                }
            }
            else if (ServerId2 > ServerId3 && ServerId2 > ServerId1)
            {
                if (ServerId1 > ServerId3)
                {
                    return ServerId3;
                }
                else
                {
                    return ServerId1;
                }
            }
            else if (ServerId3 > ServerId1 && ServerId3 > ServerId2)
            {
                if (ServerId1 > ServerId2)
                {
                    return ServerId2;
                }
                else
                {
                    return ServerId1;
                }
            }
            else if (ServerId1 == ServerId2 && ServerId2 == ServerId3 && ServerId1 == ServerId3)
            {
                return ServerId1;
            }
            else if (ServerId1 == ServerId2 && ServerId1 > ServerId3 && ServerId2 > ServerId3)
            {
                return ServerId3;
            }
            else if (ServerId2 == ServerId3 && ServerId2 > ServerId1 && ServerId3 > ServerId1)
            {
                return ServerId1;
            }
            else if (ServerId1 == ServerId3 && ServerId1 > ServerId2 && ServerId1 > ServerId3)
            {
                return ServerId1;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

我在方法中得到错误(并非所有代码路径返回值).此方法返回我已定义的int值.但即使我返回了一个int值,也不知道为什么会发生这个错误.任何人都可以帮助我吗?

Dav*_*vid 5

你有if一堆和一堆else if语句,但你没有else声明.就编译器而言,完全可以想象if不会满足任何条件.在这种情况下,该方法没有返回值.

您可以在else语句中返回值,也可以在if构造后返回值.或者,如果代码确实永远不会if不满足任何条件的情况下退出语句,那么您可以在方法结束时抛出异常以指示存在错误.例外是方法的可接受退出策略.