我正在学习C#并使用Visual Studio 2010来构建工资单程序。我收到错误“无法将类型'int'隐式转换为'short'”。
我的代码是:
private void btn_add_Click(object sender, EventArgs e)
{
try
{
// Get service instance
var employerPeriodService = Program.Kernel.Get<IEmployerPeriodService>();
// Get new code
var newCode = employerPeriodService.GenerateSAPCode();
// Create object
var employerPeriodAdd =
new EmployerPeriod
{
Code = newCode,
Name = newCode,
U_Tax_year = int.Parse(cb_tax_year.Text),
//U_Day_hrs = cb_number_hours.Text,
//U_Week_days = cb_number_days_week.Text,
//U_Week_hrs = txt_number_hours_week.Text,
//U_Month_days = cb_number_days_month.Text,
//U_Month_hrs = txt_number_hours_month.Text,
//U_Fortnight_days = cb_number_days_fortnight.Text,
//U_Fortnight_hrs = txt_number_hours_fortnight.Text,
//U_Weeks_in_month = cb_avg_weeks_month.Text,
//U_No_of_Fortnights = cb_avg_fortnights_month.Text,
U_Starting_period = Convert.ToDateTime(dateTimePicker1.Text),
U_Ending_period = Convert.ToDateTime(dateTimePicker2.Text)
//U_Comments = txt_comments.Text
};
// Save record
employerPeriodService.AddEmployerPeriod(employerPeriodAdd);
MessageBox.Show("Employer Payroll Period Added Successfully. Intake Ref: " + newCode.ToString(), "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
catch (RulesException ex)
{
MessageBox.Show(ex.GetErrorMessages(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
在我的数据库所在的Microsoft SQL Server中,U_Tax_year定义为smallint。我该怎么做才能解决这个错误。我将从组合框'cb_tax_year.Text'获得的内容转换为int,以及如何实现此目的。
任何帮助表示感谢。
答案 0 :(得分:8)
我怀疑它就像改变它一样简单:
U_Tax_year = int.Parse(cb_tax_year.Text),
到此:
U_Tax_year = short.Parse(cb_tax_year.Text),
基本上你应该检查U_Tax_year
属性的类型,并确保你正确地解析文本,以便=符号的RHS结果与属性类型分配兼容。
答案 1 :(得分:3)
使用short.Parse而不是int.Parse
答案 2 :(得分:3)
SQLServer的smallint
相当于c#的short
。所以请尝试short.Parse()
而不是int.Parse()