在c#中检查字符串并转换为int的最佳方法

时间:2017-01-29 09:02:49

标签: c# string type-conversion int string-parsing

请帮我改进我的代码。 这个想法是:  如果字符串没问题     然后转换为int

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());

或短片

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

还有其他更好的方法吗?

4 个答案:

答案 0 :(得分:4)

获取用户输入并将其转换为整数的正确方法是通过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永远不会为null,因此您无需显式检查它。我假设这个textbox1是在InitializeComponent调用中定义的TextBox控件,因此它本身不是null。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

int i = 0;

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

答案 3 :(得分:0)

是。我们需要检查TryParse是返回true还是Not。如果是真的话那就成功了如果发生任何错误,则返回false。如果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