Ошибка C #: невозможно неявно преобразовать тип 'int' в 'short' - PullRequest
1 голос
/ 20 июня 2011

Я изучаю C # и использую Visual Studio 2010 для создания программы расчета заработной платы. Я получаю сообщение об ошибке «Не удается неявно преобразовать тип int в« короткий »».

Мой код:

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 ]

8 голосов
/ 20 июня 2011

Я подозреваю, что это так же просто, как изменить это:

U_Tax_year = int.Parse(cb_tax_year.Text),

к этому:

U_Tax_year = short.Parse(cb_tax_year.Text),

По сути, вам следует проверить тип свойства U_Tax_year и убедиться, что вы правильно проанализировали текст, чтобы результат RHS знака = был совместим с присваиванием с типом свойства.

3 голосов
/ 20 июня 2011

SQLServer smallint является эквивалентом c # short.поэтому попробуйте short.Parse() вместо int.Parse()

3 голосов
/ 20 июня 2011

Использовать short.Parse, а не int.Parse

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...