从一个方法返回多个值

本文关键字:返回 方法 一个 | 更新日期: 2023-09-27 18:09:37

嗨,伙计们,我有一个关于从一个方法返回多个值的问题。我使用'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;
}

那么当我编译有这样的错误时:

"输出参数'return'必须在控件离开当前方法之前赋值"

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

从一个方法返回多个值

这意味着在所有可能的情况下(在if内部和外部,在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;
    }
//....

你的方法的参数result标记为 out 。标记为out的参数必须在方法中分配,即

result = 5;

这是强制的,所以你的方法的调用者有保证,通过out传递的参数总是设置一旦你的方法完成。

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

我猜你是想多加一行,比如

result = intRet;