簡體   English   中英

檢測到無法訪問的代碼返回值

[英]Unreachable Code Detected Return Value

如何使用此問題返回值? 請幫幫我。

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 "";
    }
}

你有多個return語句 ,你的代碼在第一個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...?
  }
}

在第一個返回語句之后(在同一個塊內)寫入的任何代碼都不會執行。 如果要從方法返回多個值,請考慮使用對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM