请帮我改进我的代码。 这个想法是: 如果字符串没问题 然后转换为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());
还有其他更好的方法吗?
答案 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