【问题标题】: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"];

标签: c#


【解决方案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() 方法时,您并未将正确的数据类型传递给方法。

【讨论】:

  • 这到底有什么帮助。
  • 他问为什么他必须转换为字符串才能让他的代码工作,原因是该方法接受具有字符串数据类型的参数。
猜你喜欢
  • 2013-12-15
  • 2011-03-30
  • 1970-01-01
  • 2012-01-12
  • 1970-01-01
  • 1970-01-01
  • 2022-12-01
  • 1970-01-01
  • 2011-03-30
相关资源
最近更新 更多