如何为整个代码块提供一个return()而不是在每个if块中返回一个.有人可以告诉我编写以下代码块的更好方法.
public object GetHeaderInfo(string agentId, string headerName)
{
if (headerName == "flyer")
{
var headerInfo = Service.GetFlierHeaderInfo(agentId);
// headerinfo is of type Flier object
return headerInfo;
}
if (headerName == "general")
{
var headerInfo = Service.GetHeaderInfo(agentId);
// headerinfo is of type report object
return headerInfo;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
回答问题的简单方法是:
object result = 0;
if (headerName == "flyer")
result = Service.GetFlierHeaderInfo(agentId);
else if (headerName == "general")
result = Service.GetHeaderInfo(agentId);
return result;
Run Code Online (Sandbox Code Playgroud)
也许:
object result;
if (headerName == "flyer")
result = Service.GetFlierHeaderInfo(agentId);
else if (headerName == "general")
result = Service.GetHeaderInfo(agentId);
else
result = 0;
return result;
Run Code Online (Sandbox Code Playgroud)
也就是说,我认为你的代码比上面的更好.实际上,多个return语句正是您对此函数的要求.这是一个不会改变状态的函数,它具有返回值的唯一任务.一旦你知道必须返回哪个值,就这样做,返回它.
我会这样写的.
if (headerName == "flyer")
return Service.GetFlierHeaderInfo(agentId);
if (headerName == "general")
return Service.GetHeaderInfo(agentId);
return 0;
Run Code Online (Sandbox Code Playgroud)
在我看来,这比单一的return语句版本更容易理解.
我还质疑你选择的0是什么样的价值.返回null那个案子会不会更有意义吗?并且object真的是返回值的正确类型吗?你没有可以使用的通用基类吗?