编译器错误消息:无法将类型'long'隐式转换为'string'

时间:2011-06-13 18:09:10

标签: c# string long-integer

我在转换中遇到了问题。这种转换是错误的吗?

这是错误:

  

编译错误说明:An   编译期间发生错误   为此提供服务所需的资源   请求。请查看以下内容   具体的错误细节和修改你的   适当的源代码。

     

编译器错误消息:CS0029:不能   隐式转换类型'long'为   '字符串'

if (hid_Action.Value.ToString().ToUpper() == "RENEW")
{
    string strHFUpdate = string.Empty;
    string srt = Convert.ToInt64(Session["AppId"] + ",'" + Session["CAAID"].ToString() + "','" + Session["UserType"].ToString() + "'");
    strHFUpdate = "oea_sp_update_HF_MC_Renewal_Status " + srt;
    rProxy.GlobalSaveData(Session["CountyName"].ToString().Trim(), strHFUpdate.ToString());
}

感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

 string srt = Convert.ToInt64(...);

是的,那不行。很难猜到这里的意图,也许是一个缺失的括号。

答案 1 :(得分:1)

这是问题

string srt = Convert.ToInt64

您正在尝试为long分配string值。你不能。您必须使用.ToString()将其更改为字符串,然后您才能分配。

还有一个错误,Convert.ToInt64不会使用浮点数转换数字,这意味着1.1将引发异常。您尝试转换的字符串完全无效,它应该做什么?

答案 2 :(得分:0)

您不能将带逗号和单引号的字符串转换为数字,另外,ToInt64()重载都会采用第二个参数:

上面的代码试图隐式地将字符串转换为另一个数据类型,ToInt64()可以使用单个参数进行重载。 ToInt64()支持从字符串转换,但这两个重载都有两个参数(见下文)

[来自MSDN:http://msdn.microsoft.com/en-us/library/system.convert.toint64.aspx]

  

ToInt64(字符串,   IFormatProvider)转换   指定的字符串表示形式   数字到等效的64位签名   整数,使用指定的   特定于文化的格式   信息。

     

ToInt64(String,Int32)转换   a中数字的字符串表示   指定的基数为等效的64位   有符号整数。

但正如我所提到的,即使您使用了正确的重载函数,由于非数字字符,您的字符串也无法解析。