获得“InvalidCastException未处理错误”;填充参数时

本文关键字:填充 参数 错误 InvalidCastException 未处理 获得 | 更新日期: 2023-09-27 18:12:55

我正在做一个计算测验和考试成绩的程序,它应该显示相等的成绩和字母(即:95=A)使用windows窗体

我创建了一个结构,它包含学生号、学生姓名、4次测验和1次考试的分数。在这个结构体上,我还创建了封装、方法和构造函数。

这个结构体位于另一个文件/类上。我创建了一个按钮,它将运行计算分数的方法。这是我的问题,我为这个结构创建的构造函数有一个错误,每当我按下我的"计算"按钮。

StudentInfo compute = new StudentInfo(Convert.ToInt32(tb_studentID),
Convert.ToString(tb_studentName),
Convert.ToDouble(tb_quiz1), Convert.ToDouble(tb_quiz2),
Convert.ToDouble(tb_tp1), Convert.ToDouble(tb_tp2),
Convert.ToDouble(tb_exam));

如何解决这个问题?

获得“InvalidCastException未处理错误”;填充参数时

使用TryParse方法代替Convert方法。这将防止出现"InvalidCastExceptions"。此外,您需要使用TextBoxText属性,而不是TextBox本身。试试这样:

int studentId;
double quiz2;
if (int.TryParse(tb_studentID.Text, out studentId) && double.TryParse(tb_quiz2.Text, out quiz2) && 
...) {
     StudentInfo compute = new StudentInfo(studentId, quiz2 ...);
}
  1. 你使用的不是c# 2010而是Visual Studio 2010
  2. 问题不在于构造函数,而在于转换
  3. 您不能将任何变量强制转换为您试图强制转换它的类型。尝试逐个转换所有参数,看看问题出在哪里。