当我尝试调用以下过程时出现错误:
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/