使用解析转换与转换它们之间有啥区别[重复]

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

【讨论】:

这到底有什么帮助。 他问为什么他必须转换为字符串才能让他的代码工作,原因是该方法接受具有字符串数据类型的参数。

以上是关于使用解析转换与转换它们之间有啥区别[重复]的主要内容,如果未能解决你的问题,请参考以下文章

List和List之间有啥区别

C ++中的宏指令和预处理器指令有啥区别[重复]

休息与肥皂有啥区别[重复]

C#中的string[][]和string[,]有啥区别[重复]

在C#中long与int64有啥区别吗

解决方案之间有啥不同[重复]