检测到不可达代码返回值

本文关键字:代码 返回值 检测 | 更新日期: 2023-09-27 18:13:30

如何返回值与这个问题?请帮帮我。

protected string SendState(Object ID_DIP,Object ID_SEQ,Object MODUL)
{
    try
    {
        ViewState["ssDIP"] = ID_DIP.ToString();
        ViewState["ssSEQ"] = ID_SEQ.ToString();
        ViewState["ssMOD"] = MODUL.ToString();
        return ID_DIP.AsString();
        return ID_SEQ.AsString();
        return MODUL.ToString();
    }
    catch (Exception)
    {
        return "";
    }
}

检测到不可达代码返回值

您有多个返回语句,您的代码将不会在第一个返回语句之后执行语句。你不能从你的方法返回多个值,如果你想返回多个值,你可以为你的情况返回List<string>或创建一个临时类并返回它的对象。

在你的代码中你使用的是AsString,我想你可能是指ToString

定义一个类:

public class MyReturnObject
{
    public string ID_DIP { get; set; }
    public string ID_SEQ { get; set; }
    public string MODUL { get; set; }
}

修改你的方法:

protected MyReturnObject SendState(Object ID_DIP, Object ID_SEQ, Object MODUL)
{
    try
    {
        ViewState["ssDIP"] = ID_DIP.ToString();
        ViewState["ssSEQ"] = ID_SEQ.ToString();
        ViewState["ssMOD"] = MODUL.ToString();
        MyReturnObject obj = new MyReturnObject();
        obj.ID_DIP = ID_DIP.ToString();
        obj.ID_SEQ = ID_SEQ.ToString();
        obj.MODUL = MODUL.ToString();
        return obj;
    }
    catch (Exception)
    {
        return null;
    }
}

第一件事是你有多个返回值,所以你的代码不会工作,所以你可以使用List<String> &要在catch情况下返回,可以在方法定义的顶部使用var,像这样——>

public List<string> SendState(Object ID_DIP,Object ID_SEQ,Object MODUL)
{
     var returnValue = new List<string>();
          try
          {
                ViewState["ssDIP"] = ID_DIP.ToString();
                ViewState["ssSEQ"] = ID_SEQ.ToString();
                ViewState["ssMOD"] = MODUL.ToString();

                returnValue.add(ID_DIP.AsString());
                returnValue.add(ID_DIP.AsString());
                returnValue.add(MODUL.ToString());
          }
          catch (Exception)
          {
                returnValue = null;
          }
     return returnValue;
}

现在你可以像这样使用上面的方法——>

var result = SendState( params )  //<--- params r ur parameters
if(result != null)
    // proceed
else
    // no value found

如果您希望返回多个具有相同类型的结果。我建议你应用协同程序模式。具体代码如下:

protected IEnumerable<string> SendState(Object ID_DIP,Object ID_SEQ,Object MODUL)
{   
   ViewState["ssDIP"] = ID_DIP.AsString();
   ViewState["ssSEQ"] = ID_SEQ.AsString();
   ViewState["ssMOD"] = MODUL.ToString();
   yield return ID_DIP.AsString();
   yield return ID_SEQ.AsString();
   yield return MODUL.ToString();    
}

你可以参考这个链接来更多地了解c#中的协程模式。

在c#中,方法通常只返回一个值。可以是包含多个字段的对象。

如果你需要从一个方法中返回多个值,你可以使用out参数或者返回一个包含所有值的类型实例。

正如Habib 建议的,返回List<string>对您的情况是一个很好的方法。

一个方法只能返回一个值,所以在三个return语句中,只有第一个语句会执行。

如果你想返回多个字符串,返回一个字符串数组:

protected string[] SendState(Object ID_DIP,Object ID_SEQ,Object MODUL) {
  try {
    ViewState["ssDIP"] = ID_DIP.ToString();
    ViewState["ssSEQ"] = ID_SEQ.ToString();
    ViewState["ssMOD"] = MODUL.ToString();
    return new string[] {
      ID_DIP.ToString(),
      ID_SEQ.ToString(),
      MODUL.ToString()
    };
  } catch (Exception) {
    return null; // or perhaps an empty array...?
  }
}

任何在第一个返回语句之后编写的代码(在同一块内)将不会执行。如果你想从一个方法中返回多个值,可以考虑使用对象。