如何使用 ?字符串的关键字

Nas*_*loo 1 c# asp.net conditional conditional-operator

我有一个简单的条件,并希望用?:关键字实现它,但编译器不要让我.这是确切的样本

// 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;
Run Code Online (Sandbox Code Playgroud)

我也试试这个

// in code behind 
decimal x = Convert.ToDecimal(textbox1.Text) != 0 ? Convert.ToDecimal(textbox1.Text) : 0;
Run Code Online (Sandbox Code Playgroud)

这些样品的bith面临错误.

如何用?:关键字定义这个?并注意textbox.text`可能为null.

Ant*_*ram 6

考虑将其改为类似的东西

decimal x;
if (!decimal.TryParse(textbox1.Text, out x))
{
    // throw an exception?
    // set it to some default value?
}
Run Code Online (Sandbox Code Playgroud)

当然,如果你想在无效/缺失输入上抛出异常,你可以简单地使用.Parse方法,它会为你抛出一个.但是使用.TryParse将允许您自定义异常的消息或者只是以另一种方式处理它,例如重新设置用户.