C#错误:无法将类型'int'隐式转换为'short'

时间:2011-06-20 05:32:37

标签: c# visual-studio-2010

我正在学习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,以及如何实现此目的。

任何帮助表示感谢。

3 个答案:

答案 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()