如果值为null或为空,则在下面的代码行中如何使用Decimal.TryParse,那么在VB.NET中的内联编码中它应为0
<input type="checkbox" name="ticket" id="ticket<%=y%>" title="<%=(CDec(Decimal.TryParse(late_fee)) + CDec(rs("ticket_amount")) + CDec(rs("nsf_fee")))-(CDec(rsp("TICKET_PAYMENTS")) + CDec(rsp("LATEFEE_PAYMENTS")) + CDec(rsp("NSFFEE_PAYMENTS")))%>" value="<%=rs("ticket_id")%>" checked="checked" onclick="doMath();"/>
感谢您的建议
答案 0 :(得分:0)
TryParse根据转换是否成功返回true或false。
尝试:
double number;
Double.TryParse(late_fee, out number);
number:“当此方法返回时,包含等效于late_fee参数的双精度浮点数,如果转换成功,则包含转换失败时为零”
使用'数字'
(CDec(number) + CDec(rs("ticket_amount")) + CDec(rs("nsf_fee")))-(CDec(rsp("TICKET_PAYMENTS")) + CDec(rsp("LATEFEE_PAYMENTS")) + CDec(rsp("NSFFEE_PAYMENTS")))
答案 1 :(得分:0)
您无法内联TryParse
方法,因为您需要首先声明将从TryParse
- 方法返回的变量。您必须使用多行或创建一个返回它的方法。
我建议无论如何都要使用变量,因为这会使你的代码更具可读性,而且这是最重要的。
但是,对于它的价值,您可以创建一个返回小数或默认值的扩展名:
Module StringExtensions
<Runtime.CompilerServices.Extension()>
Public Function ParseDecimal(ByVal aString As String, defValue As Decimal, Optional culture As Globalization.CultureInfo = Nothing) As Decimal
Dim retVal As Decimal = defValue
If culture Is Nothing Then culture = Globalization.CultureInfo.CurrentCulture
Decimal.TryParse(aString, Globalization.NumberStyles.Any, culture, retVal)
Return retVal
End Function
End Module
然后你可以内联计算,即使我仍然会使用多行和变量来提高可读性。
Dim lateFee As Decimal = late_fee.ParseDecimal(0) ' and the other variables ....