编译器错误消息:无法隐式转换类型';long';到';字符串';

本文关键字:类型 long 字符串 转换 消息 错误 编译器 | 更新日期: 2023-09-27 17:58:58

我在转换中遇到问题。这种转换有什么问题?

错误如下:

编译错误描述:编译服务此请求所需的资源时出错。请查看以下特定错误的详细信息,并适当地修改源代码。

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

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());
}

编译器错误消息:无法隐式转换类型';long';到';字符串';

以下是的问题

string srt = Convert.ToInt64

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

还有一个错误,Convert.ToInt64没有用浮点转换数字,这意味着1.1将抛出异常。你试图转换的字符串完全无效,它应该怎么做?

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

是的,这行不通。很难猜测这里的意图,也许是缺少了一个括号。

您不能将带有逗号和单引号的字符串转换为数字,此外,两个ToInt64()重载都需要第二个参数:

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

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

ToInt64(字符串,IFormatProvider)转换指定的字符串表示形式数字转换为等效的64位带符号整数,使用指定的区域性特定格式信息

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

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