如果第一个条件为假,我想返回不同的读数。我怎么做到这一点?
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;
}
答案 0 :(得分:1)
您的else
逻辑存在缺陷,因为如果reader
没有行,则else
无法使用不存在的行中的"Incorrect"
字段,因为没有实际上已读取数据且reader
为空。
至于你的语法,试试这个:
// 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
。
答案 1 :(得分:0)
简单试试这个。只需要两行。
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" );