1

我有一个简单的条件,想用?:关键字来实现它,但编译器不允许我这样做。这是确切的样本

// 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` 可能为空。

4

3 回答 3

6

考虑将其更改为类似

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

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

于 2010-06-20T05:32:43.693 回答
3

String.IsNullOrEmpty是一种方法,而不是一个领域。所以正确的用法是String.IsNullOrEmpty(textbox1.Text)

于 2010-06-20T05:31:49.497 回答
0

我用这个语句修复了它

string.IsNullOrEmpty(textbox1.Text) ? 0 : Convert.ToDecimal(textbox1.Text);
于 2010-06-20T05:31:10.403 回答