![](/img/trans.png)
[英]C# Method errors: Unreachable code detected and not all code paths return a value”
[英]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#中的協程模式。
您只能從方法返回單個值,因此只有第一個將執行的三個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.