获得“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));
如何解决这个问题?
使用TryParse
方法代替Convert
方法。这将防止出现"InvalidCastExceptions"。此外,您需要使用TextBox
的Text
属性,而不是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 ...);
}
- 你使用的不是c# 2010而是Visual Studio 2010 问题不在于构造函数,而在于转换
- 您不能将任何变量强制转换为您试图强制转换它的类型。尝试逐个转换所有参数,看看问题出在哪里。