Long.Tryparse重载和转换错误C#

Das*_*app 1 c# parsing overloading type-conversion

我在使用这个代码时遇到了困难,我试图从数据集中的数据中进行长时间的转换.

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

码:

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

错误:

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

提前致谢.

Nei*_*ick 8

两种选择:

如果您的数据字符串,则将其转换为字符串

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

否则,调用.ToString()就可以了

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

您需要这样做的原因是因为该long.TryParse()方法只接受a的实例string作为其第一个参数http://msdn.microsoft.com/en-us/library/zc2x2b1h.aspx

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

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

  • @Dashzapp如果它已经是你没有转换它的字符串,则转换不是转换.程序员告诉编译器它可以期望给定的对象是给定类型(在本例中是字符串).如果它已经很长,只需将其转换为long,因此编译器知道它是一个很长的值 (3认同)