0

次のように自分自身を呼び出す再帰関数を1つ返しましたが、それを壊すことができません。これが私のコードです

public DataSet GetTableInfo(string sItem, double dAmount)
{
   string str = string.Empty;
   double d = 0;

   Dataset ds = new Dataset();

   // Filled the dataset with the query, select Column1, Column2 from table
   if(ds.Tables[0].Rows.Count != 0)
   {
      if(ds.Tables[0].Rows[0]["Column1"].ToString() != string.empty)
      {
          GetTableInfo(str,d);
      }
      else
      {
          return ds;
      }
   }

   return ds;
}

私のelse条件が実行されたにもかかわらず、関数から抜け出すことができません.誰かがどこで間違ったのか教えてもらえますか?

4

2 に答える 2

0

再帰メソッドで返されたデータセットを返し、

 if(ds.Tables[0].Rows[0]["Column1"].ToString() != string.empty)
 {
      return GetTableInfo(str, d);
 }
 else
 {
      return ds;
 }
于 2013-06-07T11:13:13.103 に答える
0

return ステートメントがありません:

if (ds.Tables[0].Rows[0]["Column1"].ToString() != string.Empty)
{
    return GetTableInfo(str, d);
}

return ds;

最初の戻り値は基本的にサブ要素の処理を行いますが、2 番目の戻り値はスタックを巻き戻します。

于 2013-06-07T11:14:48.407 に答える