【问题标题】:How to correctly use return statements along with an if else statement?如何正确使用 return 语句和 if else 语句?
【发布时间】:2013-12-07 00:49:47
【问题描述】:

如果第一个条件为假,我想返回不同的读取。我将如何做到这一点?

           if (reader.HasRows == true)
           {

               reader.Read();


               Answers a = new Answers( reader["Correct"].ToString());

               Answer= a;

           }
               return Answer;

           else {

               Answers Answer =  new Answers();
               Answers a = new Answers( reader["Incorrect"].ToString());

               Answer= a;


           }
           return Answer;
        }

【问题讨论】:

    标签: asp.net if-statement return


    【解决方案1】:

    您的else 逻辑有缺陷,如果reader 没有行,则else 不能使用不存在行中的"Incorrect" 字段,因为实际上没有读取数据并且@987654325 @ 为空。

    至于你的语法,试试这个:

    // Are there any rows returned?
    if(reader.HasRows)
    {
        // Yes, so read the first row and grab the "Correct" field and return it
        return new Answers(reader["Correct"].ToString());
    }
    
    // No data was found
    // Return null, because you cannot get to the "Incorrect" field value
    return null;
    

    注意:由于这会返回 null,因此您的调用代码会检查 null,因此他们不会得到 NullReferenceException

    【讨论】:

      【解决方案2】:

      简单试试这个。只需要两行。

         if (reader.HasRows == true)
         {
             reader.Read();
             return  new Answers( reader["Correct"].ToString());//return correct if reader return any values
         }              
             return  new Answers( "Incorrect Values" );//return incorrect if reader not return any values           
      }
      

      或者简单试试这个三元运算符,不需要任何if else条件。

      return reader.HasRows == true ? new Answers( reader["Correct"].ToString()):new Answers( "Incorrect Values" );
      

      【讨论】: