c# - 排除参数导致错误 C# 的最佳方法
问题描述
当我尝试调用以下过程时出现错误:
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);
我收到以下错误:
输入字符串的格式不正确c#
我知道这与转换类有关,因为我在之前调用不同的方法时遇到了同样的错误。不同的是,当时使用 Convert 类的参数只有一个,而现在有几个。
错误消息不像我想要的那样具有描述性,并且没有提供很多线索,特别是在哪里发生这种情况。
除了注释掉和硬编码执行此操作的每个参数的值并查看导致问题的参数之外,是否有更好的方法来确定问题所在?
我真的很想知道,因为我的项目有时需要几分钟才能构建(我知道,这很荒谬,我已经尝试了一切来解决这个问题,但没有任何效果),因此调试这个小问题可能需要很长时间。
感谢您的任何帮助,您可以提供。
解决方案
您发布的代码片段是一个连续句子的编码等价物。您在一行代码中执行了太多的操作。这使您的代码难以阅读,并且 - 正如您所发现的 - 难以调试。
作为起点,将Convert
调用结果分配给变量,然后将它们传递给方法:
var convertedVoucherNumberAppliesTo = Convert.ToInt32(rdoVoucherNumberAppliesTo.SelectedValue);
//other conversions here
ApplyVoucherNumberToBillingCharges(practiceId, convertedVoucherNumberAppliesTo, \\ pass in other variables here...);
通过这种方式,您将能够快速确定哪个转换失败,因为每个潜在错误都在特定的行上。
至于您的项目需要几分钟来构建,取决于项目的大小,这可能是正常的。例如,我目前正在写这个答案,等待 CI 服务器上的 20 分钟构建和测试会话完成 - 构建占用了一半时间。
推荐阅读
- python - Python 3.7.4 从官方网站下载,但我安装了 python 2.7.10
- flutter - Flutter:增加 SwitchListTile 图标的大小
- c# - 执行了 SQLite 插入,但记录不在数据库中
- ms-access - 如何使 Access ODBC Export to DB2 创建 NVARCHAR 字段,或使用 ccsid 1200 vs. 37
- r - 由于独特的“组合键”而运行点差时出错;组合数据行
- python - 如何将 Pandas DataFrame 从列索引形状转换为列形状汇总值
- android - 将多个版本的 Android 应用分发给内部测试人员
- angular - 如何每隔一段时间从 Firebase 实时数据库中获取数据。或获取数据并将其显示为实时数据
- cisco - 组取件场景 - CALL_STATE.CS_CONNECTED 未被触发
- regex - 我可以匹配任意长度字符串中另一个字符正下方的字符吗?