Long.Tryparse Overload&转换错误C#

时间:2012-03-01 13:43:27

标签: c# parsing type-conversion overloading

我在使用此代码时遇到了困难,我正试图从数据集中的数据中进行一段时间的转换。

我正在尝试检查是否可以转换数据集中该位置内的值。如果它不起作用,则表示数据集中没有项目,因为所有其他参赛者(从txtfile中获取)都是有效的

代码:

long Recid = 0;
Boolean checkrecid = long.TryParse(dts.Tables[0].Rows[0]["RECID"], out Recid)

错误:

The best overloaded method match for 'long.TryParse(string, out long)' has some invalid arguments and
Argument 1: cannot convert from 'object' to 'string'    

提前致谢。

2 个答案:

答案 0 :(得分:8)

两个选项:

如果您的数据 一个字符串,那么将其转换为字符串

long Recid = 0;
Boolean checkrecid = long.TryParse((string)dts.Tables[0].Rows[0]["RECID"], out Recid)

否则,请致电.ToString()

long Recid = 0;
Boolean checkrecid = long.TryParse(dts.Tables[0].Rows[0]["RECID"].ToString(), out Recid)

您需要执行此操作的原因是因为long.TryParse()方法仅接受string的实例作为其第一个参数http://msdn.microsoft.com/en-us/library/zc2x2b1h.aspx

来自数据集的数据输入为object,因此Int64.TryParse()方法无法确定它是否为字符串且失败。 (一般来说,编程不允许歧义,这就是为什么TryParse方法不会尝试为你转换它 - 你必须明确你想要什么以及你提供什么。)

数据集非常灵活,因为您可以在其中存储任何object,但更多的工作是让程序员在再次将其返回后再将其转换回来。其他替代方案,如强类型数据集,通过更加严格地确定可以存储在其中的类型来解决该问题,但是您不必一直保持铸造。

答案 1 :(得分:0)

将对象(dts.Tables[0].Rows[0]["RECID"])转换为字符串。而已。

dts.Tables[0].Rows[0]["RECID"].ToString()