2016-04-22 1 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 char long. Чтобы подтвердить, попробуйте 'objVehicle.CurrentWeightCategory.Substring (0,1)', и вы не получите никаких исключений. – raidensan

+0

Вы должны сохранить эти преобразованные значения в отдельных переменных, прежде чем передавать их методу. Затем вы заметите, на какой строке и с каким значением вы действительно получаете исключение. Поскольку этот вызов метода является одним из операторов, вы не заметили, что 'Convert.ToInt16 (Session [" TAX_YEAR "]) работает без проблем, но' Convert.ToChar (objVehicle.CurrentWeightCategory) 'not. –

ответ

3

string может содержать много символов, но char хранит один символ.

Convert.ToChar() пытается преобразовать входной сигнал в один символ. Когда ввод имеет строку типа и содержит более одного символа, вы получаете исключение, указанное в вопросе.

Вы должны проверить objVehicle.CurrentWeightCategory.

+0

Это должен быть комментарий, а не ответ. – raidensan