2016-04-22 5 views
1

Mon code estchaîne FormatException doit être exactement un caractère à long

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

Je reçois FormatException 'chaîne doit être exactement un caractère. 'at TAX_YEAR

+0

Je suppose que vous n'obtenez pas l'erreur à 'TAX_YEAR' mais' Convert.ToChar (objVehicle.CurrentWeightCategory) ' –

+0

Comme indiqué précédemment,' objVehicle.CurrentWeightCategory' n'a pas 1 caractère long. Pour confirmer, essayez 'objVehicle.CurrentWeightCategory.Substring (0,1)' et vous n'obtiendrez aucune exception. – raidensan

+0

Vous devez stocker ces valeurs converties dans des variables séparées avant de les transmettre à la méthode. Ensuite, vous remarquerez à quelle ligne et avec quelle valeur vous obtenez réellement l'exception. Puisque cette méthode est une instruction, vous ne remarquez pas que 'Convert.ToInt16 (Session [" TAX_YEAR "])' fonctionne sans problème mais 'Convert.ToChar (objVehicle.CurrentWeightCategory)' non. –

Répondre

3

string peut contenir plusieurs caractères mais char stocke un seul caractère.

Convert.ToChar() essaie de convertir l'entrée en un caractère. Lorsque l'entrée est de type string et qu'elle contient plus d'un caractère, vous obtenez l'exception que vous avez mentionnée dans la question. Vous devez vérifier objVehicle.CurrentWeightCategory.

+0

Cela devrait être un commentaire, pas une réponse. – raidensan