【发布时间】:2011-03-05 22:23:14
【问题描述】:
我有一个简单的条件,想用?: 关键字实现它,但编译器不让我这样做。这是准确的样本
// in asp page decleration
<ajaxtoolkit:FilteredTextBoxExtender id="ftbeNumeric" runat="server" TargetControlID="textbox1" FilterType="Numbers" />
<asp:TextBox ID="textbox1" runat="server" />
// in code behind
decimal x = textbox1.Text != string.IsNullOrEmpty ? Convert.ToDecimal(textbox1.Text) : 0;
我也试试这个
// in code behind
decimal x = Convert.ToDecimal(textbox1.Text) != 0 ? Convert.ToDecimal(textbox1.Text) : 0;
这些样本中的 bth 有错误。
如何用?: 关键字定义这个?并注意textbox.text` 可能为空。
【问题讨论】:
-
正如 Oak 所说,IsNullOrEmpty 不是属性,而是静态方法。如果字符串有一个值(不是 null 或空),您似乎想将其转换为小数,如果值不能转换为小数,则可能导致 InvalidCastException。因此我建议使用更清晰和更安全的方法(就像 Anthony Pegram 说的那样)。这种方法的优点是它显示了要做什么,例如故意选择默认值或抛出自定义异常
标签: c# asp.net conditional conditional-operator