我有一个简单的条件,并希望用?:
关键字实现它,但编译器不允许我。这是确切的样本
// 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;
这些样本的表面有错误。
如何使用?:
关键字定义此内容?并注意textbox
。text`可能为空。
答案 0 :(得分:6)
考虑将其更改为
decimal x;
if (!decimal.TryParse(textbox1.Text, out x))
{
// throw an exception?
// set it to some default value?
}
当然,如果你想在无效/缺失的输入上抛出异常,你可以简单地使用.Parse方法,它会为你抛出一个。但是使用.TryParse可以让你自定义异常的消息,或者只是以另一种方式处理它,比如重新命名用户。
答案 1 :(得分:3)
String.IsNullOrEmpty
是一种方法,而不是字段。正确的用法是String.IsNullOrEmpty(textbox1.Text)
。
答案 2 :(得分:0)
我用这句话修正了
string.IsNullOrEmpty(textbox1.Text) ? 0 : Convert.ToDecimal(textbox1.Text);