检测到不可达代码返回值
本文关键字:代码 返回值 检测 | 更新日期: 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...?
}
}
任何在第一个返回语句之后编写的代码(在同一块内)将不会执行。如果你想从一个方法中返回多个值,可以考虑使用对象。