Как пользоваться ? ключевое слово для строки - PullRequest
1 голос
/ 20 июня 2010

У меня есть простое условие, и я хочу реализовать его с помощью ключевого слова ?:, но компилятор не позволяет мне. это точный образец

// 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;

Bith этих образцов лица с ошибкой.

как определить это с ключевым словом ?:? и обратите внимание, что textbox .text` может быть нулевым.

Ответы [ 3 ]

6 голосов
/ 20 июня 2010

Попробуйте изменить его на что-то вроде

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

Конечно, если вы хотите сгенерировать исключение для неверного / отсутствующего ввода, вы можете просто использовать вместо этого метод .Parse, и он будет выбрасывать одиндля тебя.Но использование .TryParse позволит вам настроить сообщение об исключении или просто обработать его другим способом, например, перекомпоновать пользователя.

3 голосов
/ 20 июня 2010

String.IsNullOrEmpty - это метод, а не поле.Таким образом, правильное использование String.IsNullOrEmpty(textbox1.Text).

0 голосов
/ 20 июня 2010

Я исправил это утверждение

string.IsNullOrEmpty(textbox1.Text) ? 0 : Convert.ToDecimal(textbox1.Text);
...