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)
提前致谢.
两种选择:
如果您的数据是字符串,则将其转换为字符串
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在其中存储任何数据集,但是程序员在再次将其返回后再将其强制转换为更多工作.其他替代方案,如强类型数据集,通过更加严格地确定您可以存储在哪些类型中来解决该问题,但是您不必一直保持铸造内容.