You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#测验应用中正确答案计数无法正常递增的问题求助

C#测验应用中正确答案计数无法正常递增的问题求助

Hey,我来帮你排查这个计数不递增的问题~

你代码里的核心问题很明显:previousQSet和correctAnswerCount是方法内部的局部变量!每次调用SaveResultsToDatabase方法时,这两个变量都会被重新初始化(previousQSet变回null,correctAnswerCount变回0),完全没法记住上一次调用时的状态,自然就没法跨题目累积计数了。

给你一个简单有效的修复方案:

第一步:把状态变量改成类的成员变量

在你的类(也就是包含SaveResultsToDatabase方法的类)里,把这两个变量声明为类级别的成员,这样它们的状态就能在多次方法调用之间保留:

// 类的成员变量,放在方法外面
private string _previousQSet = null;
private int _correctAnswerCount = 0;

第二步:修改方法逻辑,使用成员变量

把方法里原来的局部变量声明删掉,换成上面的成员变量:

private void SaveResultsToDatabase(string studentAnswer, string currentQuestion)
{
    // 这里用类成员变量,不再重新初始化
    if (currentQSet != _previousQSet)
    {
        _correctAnswerCount = GetCorrectAnswerCount(studentId, currentQSet);
        _previousQSet = currentQSet;
    }

    string result = studentAnswer == correctAnswer ? "Correct" : "Incorrect";

    if (result == "Correct")
    {
        _correctAnswerCount++;
    }

    // 注意这里插入数据库时,要用_correctAnswerCount作为numberOfCorrectAnswers的值
    string query = "INSERT INTO studentAnswers (studentId, qSet, teacherId, question, studentAnswer, correctAnswer, result, numberOfCorrectAnswers) " +
                   "VALUES (@studentId, @qSet, @teacherId, @question, @studentAnswer, @correctAnswer, @result, @numberOfCorrectAnswers)";
    
    // 记得用参数化查询绑定值,避免SQL注入
    // 示例参数绑定(根据你的数据库操作框架调整)
    // command.Parameters.AddWithValue("@numberOfCorrectAnswers", _correctAnswerCount);
    
    // ... 后续数据库执行代码
}

额外注意事项

  • 要确保currentQSet和correctAnswer、studentId这些变量能正确获取到当前题集、正确答案和学生ID,不然逻辑还是会出错
  • 如果你的应用是多线程环境(比如同时处理多个学生答题),还需要考虑线程安全问题,可以加锁或者用线程安全的变量类型;如果是单学生的单进程场景,上面的改法就足够了
  • 一定要用参数化查询,别直接拼接SQL字符串,这能有效防止SQL注入攻击

备注:内容来源于stack exchange,提问作者Tharuka Dilshan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 07:44:29