【问题标题】:The out parameter must be assigned to before control leaves the current method必须在控制离开当前方法之前分配 out 参数
【发布时间】:2016-11-18 09:50:49
【问题描述】:
       else
  strPath = Path.Combine(Server.MapPath("~/" + strFileToUpload + strVendorNo), fileName);

                                if (!string.IsNullOrEmpty(strPath))
                                {
                                    strReturnMssg = strPath;
                                    fileItem.SaveAs(strPath);
                                }
                            }
                        }
                                else


         strReturnMessage = "Selected file should be less than 5ΜB.";
                                }
                    }
                }
            }
        }
        catch (Exception ex)
        {
            Response.Write("<!--" + ex.Message + "-->");
        }

        return strReturnMssg;
    }

无法将附件发送到服务器,只有路径正在运行 在错误 11 中出现错误必须在控制离开当前方法之前将输出参数“strReturnMessage”分配给

【问题讨论】:

  • 如果我们能看到,那就太好了: 1 - 找出你的 out 变量是什么的实际方法参数。 2 - 不会让我流血的格式。 3 - 让您实际阅读错误消息,它清楚地告诉您如何处理这种情况

标签: c# asp.net-mvc


【解决方案1】:

当您的 try-catch 块中发生错误时,您的返回消息变量似乎没有被定义。只需在方法的开头设置 strReturnMssg = string.Empty 或默认值就足够了。

【讨论】:

    【解决方案2】:

    错误是因为在离开方法之前,您没有在某个范围内为 out 参数赋值。例如:

    bool TrySomeMethod(bool someCondition, out int someValue)
    {
        if (someCondition)
        {
            someValue = 1;
            return true;
        }
        else
        {
            return false;
        }
    }
    

    会给你同样的编译时错误,因为someValue在else语句的return语句之前没有被赋值。

    要解决此问题,您可以在返回之前指定一个值:

    someValue = -1;
    return false;
    

    或者在您的方法的顶部,您可以为 out 参数分配一些默认值,即

    someValue = -1;
    if (someCondition)
    //....
    

    但是,如果使用这种方法,您必须小心地将 out 参数设置为您想要的值,如果成功则不会引发错误,即

    bool TrySomeMethod(bool someCondition, out int someValue)
    {
        someValue = -1;
        if (someCondition)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    

    这样可以正常编译,但存在逻辑问题,因为 someValue 从未在 if 语句中设置为 1

    请注意,在您的特定情况下,您的方法希望 strReturnMessage 成为 out 参数,并且您还从方法 strReturnMssg 返回一个名称非常相似的变量。如果您需要两条返回消息,则您的逻辑不太正确。

    【讨论】:

      猜你喜欢
      • 2012-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多