1

if ブロックごとに return を使用する代わりに、コードブロック全体に対して 1 つの return() を使用するにはどうすればよいですか。次のコード ブロックのより良い書き方を教えてください。

 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;
 }
4

8 に答える 8

2

これを試してください。headerInfo条件が一致しない場合に返すデフォルト値を先頭に宣言し、条件内でこの変数を設定して、最後に関数から返します。

public object GetHeaderInfo(string agentId, string headerName) //(string Mlsnums)
{
  object headerInfo = 0;
  if (headerName == "flyer")
  {
      headerInfo = Service.GetFlierHeaderInfo(agentId);
  }
  else if (headerName == "general")
  {
     headerInfo = Service.GetHeaderInfo(agentId);
  }
  return headerInfo;
}
于 2013-11-12T18:12:27.353 に答える
1

スイッチを使用するだけですか?

switch (headerName) {
   case "flyer" : return Service.GetFlierHeaderInfo(agentId);
   case "general" : return  Service.GetHeaderInfo(agentId);
   default: return 0;
}

戻り値は 1 つだけです (これは読みにくいですが、それは単なる観点です)。

object headerInfo = 0;

switch(headerName) {
     case "flyer" : headerInfo = Service.GetFlierHeaderInfo(agentId);
     break;
     case "general" : headerInfo = Service.GetHeaderInfo(agentId);
     break;
}
return headerInfo;
于 2013-11-12T18:14:25.160 に答える
1
public object GetHeaderInfo(string agentId, string headerName) //(string Mlsnums)
{
   switch (headerName )
   {
    case "flyer":
    return Service.GetFlierHeaderInfo(agentId);

    case "general":
    return Service.GetHeaderInfo(agentId);

    default:
    return 0;
  }
}

編集:あなたが1つのリターンを望んでいることに今気づきました...

public object GetHeaderInfo(string agentId, string headerName) //(string Mlsnums)
{
   var headerInfo = 0;
   switch (headerName )
   {
    case "flyer":
    headerInfo = Service.GetFlierHeaderInfo(agentId);

    case "general":
    headerInfo  = Service.GetHeaderInfo(agentId);
   }
 return headerInfo ;
}

PS: このように使用できます

public object GetHeaderInfo(string agentId, string headerName) //(string Mlsnums)
{
   return (headerName=="flyer"?Service.GetFlierHeaderInfo(agentId):headerName=="general"?Service.GetHeaderInfo(agentId):0);
}
于 2013-11-12T18:17:42.257 に答える
0

試す

public object GetHeaderInfo(string agentId, string headerName) 
{
  object instance ;

  switch ( headerName )
  {
  case "flyer"   : instance = Service.GetFlierHeaderInfo( agentId ) ; break ;
  case "general" : instance = Service.GetHeaderInfo(      agentId ) ; break ;

  default        : throw new ArgumentOutOfRangeException("headerName" ) ;
  }

  return instance ;
}
于 2013-11-12T18:32:15.523 に答える