visual studio 2010-C#错误:无法隐式转换类型';int';到';short'

本文关键字:类型 int short 转换 错误 2010-C# studio visual | 更新日期: 2023-09-27 18:01:01

我正在学习C#,但一直收到一个错误"无法将类型'int'隐式转换为'short'"。

在我的数据库所在的Microsoft SQL Server中,U_Weeks_In_Month被定义为smallint。我需要做些什么来解决这个错误?

我试着用短音。与年份中的文本字段一样进行分析,但这对项目不起作用,即

U_Weeks_In_Month = short.Parse(item.WeekNumber),

有什么解决方案吗?

我的代码是:

var weekInfos = SAPUtility.GetWeekInfo(dateTimePicker1.Value, 52);
// Create object
foreach (var item in weekInfos)
{
    // Get new code
    var newWeeklyCode = weeklyPeriodService.GenerateSAPCode();
    var weeklyPeriodAdd =
        new WeeklyPeriod
        {
            Code = newWeeklyCode,
            Name = newWeeklyCode,
            U_Tax_Year = short.Parse(txt_tax_year.Text),
            U_Month = item.Month.ToString(),
            U_Pay_Process_Status = "N",
            U_Payroll_Year = short.Parse(txt_tax_year.Text),
            U_Weeks_In_Month = item.WeekNumber,
            U_Starting_date = item.FirstDayOfWeek,
            U_Ending_date = item.LastDayOfWeek,
        };
    // Save record
    weeklyPeriodService.AddWeeklyPeriod(weeklyPeriodAdd);
}

visual studio 2010-C#错误:无法隐式转换类型';int';到';short'

我怀疑您只需要:

U_Weeks_In_Month = (short) item.WeekNumber

另一种选择是将WeekNumber属性更改为short

此外,我会将txt_tax_year.Text的解析拉到循环之外:

short taxYear = short.Parse(txt_tax_year.Text);
foreach (var item in weekInfos)
{
    // Use taxYear in here
}

您可以铸造项目,例如:U_Weeks_In_Month=(短(项目。周号,

但我会检查为什么项目。WeekNumber是一个整数,请更正它(假设代码是您的(。

似乎item.WeekNumber属于int类型。在这种情况下,编译器给出了正确的错误。如果您不确定解析是否成功,则应该使用short.Parseshort.TryParse