2016-04-22 121 views
1

我的代码是出现FormatException字符串必须是一个字符长

objVehicle.TaxAmount = CalculateTax_TaxableVeh(
    objVehicle.IsLogging, 
    Convert.ToChar(objVehicle.CurrentWeightCategory), 
    Convert.ToInt16(Session["FUM"]), 
    Convert.ToInt16(Session["TAX_YEAR"])); 

我收到出现FormatException“字符串的长度必须为一个字符。'at TAX_YEAR

+0

我假设你不会在'TAX_YEAR'得到错误,而是'Convert.ToChar(objVehicle.CurrentWeightCategory)' –

+0

正如其他说明的那样,'objVehicle.CurrentWeightCategory'不是1个字符长。要确认,请尝试'objVehicle.CurrentWeightCategory.Substring(0,1)',你将不会有任何异常。 – raidensan

+0

在将它们传递给方法之前,应将这些转换后的值存储在单独的变量中。然后你会注意到哪一行以及哪一个值你实际得到异常。由于此方法调用是一种语句,因此您不会注意到'Convert.ToInt16(Session [“TAX_YEAR”])'没有问题,但是'Convert.ToChar(objVehicle.CurrentWeightCategory)'没有问题。 –

回答

3

string可以包含许多字符,但char存储单个字符。

Convert.ToChar()试图将输入转换为一个字符。当输入是字符串类型并且它包含多个字符时,您会在问题中提到异常。

您应该检查objVehicle.CurrentWeightCategory

+0

这应该是一个评论,而不是答案。 – raidensan

相关问题