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

时间:2011-07-05 06:41:07

标签: c# visual-studio-2010

我正在学习C#并不断收到错误“无法将类型'int'隐式转换为'short'”。

在我的数据库所在的Microsoft SQL Server中,U_Weeks_In_Month被定义为smallint。我该怎么做才能解决这个错误?

我尝试使用short.Parse,就像在年份文本字段中一样,但这不适用于该项目,即

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);
}

3 个答案:

答案 0 :(得分:4)

我怀疑你只需要:

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
}

答案 1 :(得分:0)

您可以投射项目,例如:  U_Weeks_In_Month =(短)item.WeekNumber,

但我会检查为什么item.WeekNumber是一个整数并更正它(假设代码是你的)。

答案 2 :(得分:0)

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