整个方法只有一个return()

Bum*_*Bee 1 c#

如何为整个代码块提供一个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)

Dav*_*nan 7

回答问题的简单方法是:

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真的是返回值的正确类型吗?你没有可以使用的通用基类吗?