c# - 解决导致 C# 错误的参数的最佳方法

标签 c# .net debugging error-handling parameters

当我尝试调用以下过程时出现错误:

ApplyVoucherNumberToBillingCharges(practiceID,
                                  Convert.ToInt32(rdoVoucherNumberAppliesTo.SelectedValue), 
                                  VoucherNumber, 
                                  VoucherNumberID,
                                  Convert.ToInt32(hdRoundingRecordId.Value),
                                  ChargeID,
                                  hdGenerateVoucherNumberChargeList.Value,
                                  Convert.ToDateTime(txtFromDate.Text),
                                  Convert.ToDateTime(txtToDate.Text),
                                  Convert.ToDateTime(txtPostingDate.Text),
                                  Convert.ToInt32(ddlVisitType.SelectedValue),
                                  SelectVisitProvider.SelectedID,
                                  SelectVisitLocation.SelectedID,
                                  chkOverwriteVoucherNumber.Checked);

我收到以下错误:

input string was not in a correct format c#

我知道这与转换类有关,因为我之前调用不同的方法时遇到了同样的错误。不同之处在于,当时只有一个参数使用 Convert 类,而现在有多个参数。

错误消息没有像我希望的那样具有描述性,也没有提供很多关于具体发生位置的线索。

除了为执行此操作的每个参数注释掉并硬编码一个值并查看是哪个参数导致了问题,是否有更好的方法来确定问题所在?

我真的很想知道,因为我的项目有时需要几分钟来构建(我知道,这很荒谬,我已经尝试了一切来解决这个问题,但没有任何效果),所以调试这个小问题可能需要很长时间。

感谢您提供的任何帮助。

最佳答案

您发布的代码段相当于一个连续句子的编码。您在一行代码中执行了太多操作。这会使您的代码难以阅读,并且 - 正如您发现的那样 - 难以调试。

首先,将 Convert 调用的结果分配给变量,然后将它们传递到方法中:

var convertedVoucherNumberAppliesTo = Convert.ToInt32(rdoVoucherNumberAppliesTo.SelectedValue);
//other conversions here
ApplyVoucherNumberToBillingCharges(practiceId, convertedVoucherNumberAppliesTo, \\ pass in other variables here...);

通过这种方式,您将能够快速确定哪个转换失败,因为每个潜在错误都在特定行上。

至于您的项目需要几分钟来构建,这取决于项目大小,这可能是正常的。例如,我目前正在写这个答案,等待 CI 服务器上 20 分钟的构建和测试 session 完成 - 构建占用了一半的时间。

关于c# - 解决导致 C# 错误的参数的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50010468/

相关文章:

c# - 如何将变量的名称传递给函数并在 C# 中返回其值?

c# - 执行 SSL Pinning 时忽略 SslPolicyErrors 是否安全?

c# - 带有预共享字典的 .NET 二进制 XML

.net - 获取本地化路径的函数?

linux - 如何为用户空间应用程序交叉编译系统tap脚本

c# - 在 Windows 8 上布局或分辨率发生变化时如何运行函数?

c# - Web 服务函数调用中的 out 参数问题

.net - 在 Windows 7 上使用 Powershell 删除防火墙规则

java - 记录 Java 应用程序的所有网络交互

c# - Perlin 地形页面不匹配 : elusive bug