有没有办法在异步方法中使用out参数.?如果没有,任何人都可以建议我如何从异步方法返回OUT参数?

Sri*_*m M 1 .net c# task-parallel-library async-await asp.net-web-api2

我使用以下方法:

public async Task<SaveStatus> Save(Foo foo,out int param)
{
    .......
    MySqlParameter prmparamID = new MySqlParameter("pParamID", MySqlDbType.Int32);
        prmparamID .Direction = ParameterDirection.Output;
        sqlCommand.Parameters.Add(prmparamID); 
    try
        {
            await sqlConnection.OpenAsync();
            await sqlCommand.ExecuteNonQueryAsync();

            status = (SaveStatus)Convert.ToInt32(prmReturnValue.Value);

            if (status == SaveStatus.Success)
            {
                if (Common.IsDBValueNotNullOrEmpty(prmParamID))
                {
                    param= Convert.ToInt32(prmParamID.Value);
                }
            }
        }      

    return status;
}
Run Code Online (Sandbox Code Playgroud)

我想返回状态和整数参数.任何人都可以帮我解决这个问题吗?

i3a*_*non 10

您不能outasync方法中拥有参数.以下是有关原因的更多信息:为什么异步方法不能有ref或out参数?

如果要返回多个返回值,则可能应该有一个包含这些值的类并将其返回.

如果您不想创建新类,可以使用Tuple:

public async Task<Tuple<SaveStatus, int>> Save(Foo foo)
{
    SaveStatus status;
    int param;

    // ... 

    return Tuple.Create(status, param);
}
Run Code Online (Sandbox Code Playgroud)