如何使用此问题返回值? 请帮帮我。
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 "";
}
}
答案 0 :(得分:8)
你有多个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;
}
}
答案 1 :(得分:2)
首先,你有多个返回值,所以你的代码不起作用,所以你可以使用List<String>
&amp;要在catch情况下返回,你可以在方法定义的顶部使用var,就像这样---&gt;
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;
}
现在你可以使用上面的方法---&gt;
var result = SendState( params ) //<--- params r ur parameters
if(result != null)
// proceed
else
// no value found
答案 2 :(得分:1)
如果要返回具有相同类型的多个结果。我建议你应该应用协程模式。具体内容如下:
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#中的协程模式。
答案 3 :(得分:0)
在C#中,方法通常只返回一个值。该值可以是具有多个字段的对象。
如果需要从方法返回多个值,可以使用out
参数或返回包含所有值的类型实例。
作为Habib suggested ,在您的情况下,返回List<string>
是一种很好的方法。
答案 4 :(得分:0)
您只能从方法返回单个值,因此只有第一个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...?
}
}
答案 5 :(得分:0)
在第一个return语句之后(在同一个块中)写入的任何代码都不会执行。如果要从方法返回多个值,请考虑使用对象。