将字符串值转换为int

时间:2013-05-30 04:36:24

标签: c#

if (!IsPostBack)
{
    string EnquiryID = (Session["Enq_ID"].ToString());

    if (EnquiryID != null)
    {
        int Enquiry = Convert.ToInt32(EnquiryID);

        hotelOBJ.FillbyQueryEnquiry1(Enquiry, txtClientph, txtClientAddress );
    }
}

有我的代码我的会话未转换为整数,错误是

  

“输入字符串的格式不正确。”

3 个答案:

答案 0 :(得分:3)

错误表示在某些情况下可能会有一些字符无法转换为整数,例如1234ab包含无法转换为整数的字符ab

你能做的是:

bool result = Int32.TryParse(Session["Enq_ID"].ToString(), out number);

if (result)
{
    hotelOBJ.FillbyQueryEnquiry1(number, txtClientph, txtClientAddress );
}
else
{
    Console.WriteLine("Attempted conversion of '{0}' failed.",
                       Session["Enq_ID"].ToString());
}

答案 1 :(得分:0)

使用Int32.Parse()。解析时要注意FormatException,首先要使用TryParse,或者在扩展方法中包装TryParse。还要更改if语句。如果缺少查询字符串参数,现在的方法可能导致NullReferenceException。

if (!IsPostBack)
{
 if (Session["Enq_ID"] != null)
 {
 string EnquiryID = Session["Enq_ID"].ToString();
 if (EnquiryID.IsValidInt32())
   {
   int Enquiry =Int32.Parse(EnquiryID);
   hotelOBJ.FillbyQueryEnquiry1(Enquiry, txtClientph, txtClientAddress );
   }
 }
}

扩展方法......

 public static bool IsValidInt32(this string value)
 {
     int result;
     return int.TryParse(value, out result);
 }

答案 2 :(得分:0)

我认为您尝试转换为int的字符串为空或包含不是数字的字符(基本上您的字符串不表示字符串形式的整数值)。这就是你收到错误信息的原因。

所以至少你必须更换你的

if (EnquiryID != null) 

if(!string.IsNullOrWhiteSpace(EnquiryID))

如果您尝试转换变量,那么您将会知道如何转换它。

如果您尝试转换的字符串是整数,则使用Int32.TryParse()函数来测试(并转换为整数)。