从方法返回多个值

时间:2011-09-23 02:46:10

标签: c#

嗨,伙计们,我遇到了从方法中返回多个值的问题。我正在使用'out'从方法返回其他值,这里是片段:

public DataTable ValidateUser(string username, string password, out int result)
{
    try
    {
        //Calls the Data Layer (Base Class)
        if (objDL != null)
        {
            int intRet = 0;
            sqlDT = objDL.ValidateUser(username, password, out intRet);
        }
    }
    catch (Exception ex)
    {
        ErrorHandler.Handle(ex);
        OnRaiseErrorOccuredEvent(this, new ErrorEventArgs(ex));
    }
    return sqlDT;
}

然后当我编译出这样的错误时:

“必须在控制离开当前方法之前将out参数'return'分配给”

任何人都可以帮我解决这个问题。

3 个答案:

答案 0 :(得分:2)

这意味着在所有可能性中(在catch的内部和外部,在catch中),必须分配结果变量。

最好的方法是在函数开头给它一个默认值:

public DataTable ValidateUser(string username, string password, out int result)
{
    result = 0;
    try
    {
        //Calls the Data Layer (Base Class)
    if (objDL != null)
    {
        int intRet = 0;
        sqlDT = objDL.ValidateUser(username, password, out intRet);
        result = intRet;
    }
//....

答案 1 :(得分:1)

您方法的参数result标记为out。标有out的参数必须在您的方法中指定,即

result = 5;

这是强制执行的,因此您的方法的调用者可以保证在方法完成后始终设置与out一起传递的参数。

答案 2 :(得分:1)

您没有在方法中设置result变量。

我猜你想要添加额外的行,例如

result = intRet;