检测到无法检测到的代码返回值
如何在此问题中返回值? 请帮助我。检测到无法检测到的代码返回值
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>
&返回的情况下,你可以在方法定义的顶部使用一个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
'受保护的列表
你有多个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;
}
}
您只能从方法中返回单个值,因此在您的三个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...?
}
}
是第一个return语句(同一区块内)后编写任何代码将不会执行。如果你想从一个方法返回多个值,请考虑使用对象。
如果你想返回的具有相同类型的多个结果。我建议你应该使用协程模式。细节在这里如下代码:
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();
}
你把参考link获得更多的了解有关在C#协程模式。
我不知道你在做什么,但是如果你将返回类型从'string'改为'IEnumerable',那么你可以把'return'改成'yield return',你将会得到一个迭代器块,当消费者'foreach'通过它时,一个接一个地返回许多字符串。 –
2013-05-14 07:50:15