TryParse方法

时间:2013-03-17 17:38:56

标签: c# visual-studio-2012 tryparse

我对下面的代码有疑问。我试图使用int.TryParse方法来检查用户的输入(如果用户在文本框上放置“abc”,它应该显示一个错误告诉用户,这是错误的输入,并且他们应该输入一个完整的号码。)。我想知道为什么我的代码不想工作。这就是我所拥有的:

private void CalcStayChargesButton_Click(object sender, EventArgs e)
{
     // Get the user input.
     NumberOfDays = int.Parse(DaysInHospitalChargesTextBox.Text);
     if (int.TryParse(DaysInHospitalChargesTextBox.Text, out NumberOfDays))
     {
         MessageBox.Show("Please enter a whole number.");
     }
}

在代码视图中没有错误,但是当我运行应用程序来测试它时,它会回到第4行并突出显示它,但我无法理解它。请记住,NumberOfDays整数已设置在表单的开头下方,以便我可以在整个应用程序中普遍使用它。有人请给我任何关于如何使其工作的提示吗?我可能忽视了一些事情。非常感谢。

5 个答案:

答案 0 :(得分:1)

if (int.TryParse(DaysInHospitalChargesTextBox.Text, out NumberOfDays))
        {
            MessageBox.Show("Please enter a whole number.");
        }

通过执行此操作,如果解析成功,则显示此消息,您应该执行此操作

if (!int.TryParse(DaysInHospitalChargesTextBox.Text, out NumberOfDays))
        {
            MessageBox.Show("Please enter a whole number.");
        }

答案 1 :(得分:0)

int.TryParse在无法解析时返回false,因此您必须将!置于您的条件中:

private void CalcStayChargesButton_Click(object sender, EventArgs e)
{
    // Get the user input.
    if (!int.TryParse(DaysInHospitalChargesTextBox.Text, out NumberOfDays))
    {
        MessageBox.Show("Please enter a whole number.");
    }
}

为什么使用int.Parse然后使用int.TryParse?使用其中一个,而不是两个。

您还必须拥有一个名为NumberOfDays的变量,该变量必须为int类型。如果类中没有这样的变量,请在if语句之前添加一个:

int NumberOfDays;
if(!int.TryParse(...))

答案 2 :(得分:0)

我认为这就是你想要的:

private void CalcStayChargesButton_Click(object sender, EventArgs e)
{
    // Get the user input.
    int NumberOfDays;
    if (!int.TryParse(DaysInHospitalChargesTextBox.Text, out NumberOfDays))
    {
        MessageBox.Show("Please enter a whole number.");
    }
}

你对int.Parse的第一次调用会抛出一个Exception,如果它不是一个可解析的数字 - 这就是TryParse的用途,如果无法解析数字,它就会返回false。此外,当您的消息是有效数字时,您的逻辑显示消息,因此如果无法解析该数字,则需要!来使语句解析为true。

答案 3 :(得分:0)

int.TryParse(Something,out value)尝试解析“Something”的值并将值设置为out(如果这样可以)。 如果这是正确的,则int.TryParse返回true(如果没有则返回false。)

因此,对于您的示例,您应该做的是:

private void CalcStayChargesButton_Click(object sender, EventArgs e)
{
     int NumberOfDays; //Create the variable
     //try to parse DaysInHosputalChargesTextBox.Text
     if (!(int.TryParse(DaysInHospitalChargesTextBox.Text, out NumberOfDays))) 
     {
         // "!" means the parsing was not ok. So the user should reenter the number     
         MessageBox.Show("Please enter a whole number.");
     }
     else
     {
         //some code to do if the parsing was successful. 
     }
}

有关详细信息,请参阅msdn documentation

答案 4 :(得分:0)

了解int.TryParse如何使用

private void CalcStayChargesButton_Click(object sender, EventArgs e)
{
    int NumberOfDays;
    if (!int.TryParse(DaysInHospitalChargesTextBox.Text, out NumberOfDays))
    {
        MessageBox.Show("Please enter a whole number.");
    }
}