使用解析转换与转换它们之间有啥区别[重复]
Posted
技术标签:
【中文标题】使用解析转换与转换它们之间有啥区别[重复]【英文标题】:conversion using parse vs convert what is the difference between them [duplicate]使用解析转换与转换它们之间有什么区别[重复] 【发布时间】:2021-03-25 01:25:49 【问题描述】:为什么我必须使用 .ToString()
才能使此代码起作用:
confirmedAcceptance = int.Parse(dr["confirmedAcceptance"].ToString());
这会产生错误:
confirmedAcceptance = int.Parse(dr["confirmedAcceptance"]);
【问题讨论】:
看起来像 XY 问题。dr
是什么类型? dr
的索引器的返回类型是什么?如果dr
代表DataRow
,那么您既不需要Parse
,也不需要Convert
。只需将值转换为适当的类型,就像这样,如果该字段真的是 int
一个:confirmedAcceptance = (int)dr["confirmedAcceptance"];
完整解释:Uses Of Int.Parse, Convert.ToInt32, And int.TryParse (c-sharpcorner.com)
【参考方案1】:
int.Parse 尝试将某个 Object 解析为 INT。这可以将字符串转换为 INT(他在其中计算它),我们无法确定它是否真的有效。这就是为什么我们有 TryParse 如果它实际上不起作用,它会立即捕获程序
Convert 使用手动编程的转换。像 Convert.ToInt() 它具有 Double/Etc 的隐式转换。
因此,如果您知道它受支持,请始终使用 Convert,如果您可能不知道会出现什么,并且不得不稍加思考。使用 Parse,如果最好的话 TryParse..
【讨论】:
“始终使用转换”听起来非常非常地道。我会说“除非你真的需要,否则不要使用Convert
类”【参考方案2】:
“Parse”方法接受一个字符串作为参数。 https://docs.microsoft.com/en-us/dotnet/api/system.int32.parse?view=net-5.0 ‘Convert’ 方法也接受一个字符串作为参数。 https://docs.microsoft.com/en-us/dotnet/api/system.convert.toint32?view=net-5.0
当您将整数传递给 Int.Parse() 或 Convert.ToInt32() 方法时,您并未将正确的数据类型传递给方法。
【讨论】:
这到底有什么帮助。 他问为什么他必须转换为字符串才能让他的代码工作,原因是该方法接受具有字符串数据类型的参数。以上是关于使用解析转换与转换它们之间有啥区别[重复]的主要内容,如果未能解决你的问题,请参考以下文章