2017-01-29 3 views
0

Пожалуйста, помогите мне улучшить код. Идея такова: если строка нормально затем преобразовать в целоеЛучший способ проверить строку и преобразовать в int в C#

1- это проверить только нуль или пустую строку

int t=0; 
if(!string.IsNullOrEmpty(textbox1.text.trim()) 
    t= int.Parse(textbox1.text.trim()); 

2-

if(int.tryparse(textbox1.text.trim(), out t)  
    t=int.Parse(textbox1.text.trim()); 

или shortif

return string.IsNullOrEmpty(textbox1.text.trim()) ? 0 : int.Parse(textbox1.text.trim()); 

есть ли другой лучший способ?

+1

Что такое ваше определение «ОК»? –

+1

Если 'textbox1.text' является' null', вы получите 'NullReferenceException' в' textbox1.text.trim() '. Проверка '! String.IsNullOrEmpty' вам не поможет. – Guy

+1

Textbox1.Text никогда не является нулевым – Steve

ответ

3

Правильный способ получить пользовательский ввод и конвертировать его в целых числах с помощью метода Int32.TryParse. Этот метод имеет преимущество, чтобы не вызывать дорогостоящее исключение, если вход неправильный (например, Parse или Convert.ToInt32), но возвращает true или false, что позволяет отображать значимое сообщение об ошибке вашему пользователю.

int t; 
if(Int32.TryParse(textbox1.Text, out t) 
{ 
    // t has ben set with the integer converted 
    // add here the code that uses the t variable 
} 
else 
{ 
    // textbox1.Text doesn't contain a valid integer 
    // Add here a message to your users about the wrong input.... 
    // (if needed) 
} 

Обратите внимание, что textbox1.Text никогда не является нулевым, поэтому вам не нужно явно его проверять. Я полагаю, что это текстовое поле1 является элементом управления TextBox, определенным в вашем вызове InitializeComponent и, следовательно, не является нулевым.

+0

Кажется, блок IF без тела? – jaleel

+0

Это был просто пример. Вместо комментариев просто добавьте код, который использует переменную t или сообщение для ваших пользователей. – Steve

+0

с вашей помощью: – jaleel

1
int t = 0; 
int.TryParse(textbox1?.Text?.Trim(), out t); 
0
int i = 0; 

Int32.TryParse(TextBox1.Text, out i); 
0

Да. Нам нужно проверить, возвращается ли TryParse true или нет. если это правда, то это удается & ложь, если какая-либо ошибка occurs.The TryParse возвращает 0 для обоих, если TryParse неудачен или фактическое значение Строка 0.

string s2 = "13.3"; 
int i; 

//i = Convert.ToInt32(s2);     // Run Time Error 
Console.WriteLine(int.TryParse(s2, out i)); // False 
Console.WriteLine(i);      // Output will be 0 

string s3 = "Hello"; 
//i = Convert.ToInt32(s2);     // Run Time Error 
Console.WriteLine(int.TryParse(s3, out i)); // False 
Console.WriteLine(i);      // Output will be 0 

string s1 = null; 
Console.WriteLine(int.TryParse(s1, out i)); // False 
Console.WriteLine(i);      // Output will be 0 

string s4 = "0";  
Console.WriteLine(int.TryParse(s4, out i)); // return True 
Console.WriteLine(i);      // Output will be 0 
Смежные вопросы