【问题标题】:C# How to optimize a simple sum?C#如何优化一个简单的求和?
【发布时间】:2016-07-27 09:14:22
【问题描述】:

我正在尝试将用户在文本框中输入的数字添加到数字中。操作相当简单,但我被要求尽可能优化代码。到目前为止,我已经创建了一个方法来验证 textBox 是否为空。然后我有一种将文本框中的字符串转换为“int”的方法。但是,现在我不知道如何获得这些数字并在我的“求和”方法中使用它们。也许我忘记了一些基本的东西。

这是我的代码:

private void btnSum_Click(object sender, RoutedEventArgs e)
{
    String num1 = txtNum1.Text;
    String num2 = txtNum2.Text;    

    if(validate(num1,num2) == false)
    {
        MessageBox.Show("Empty fields");
    }
    else 
    {
       convertNum(num1, num2);    
       MessageBox.Show("The sum is: ");   
    }
}


public static Boolean validate(String n1, String n2) 
{
    if (n1 == null || n1.Equals("") || n2 == null || n2.Equals(""))
    {
        return false;
    }
    else 
    {
        return true;
    }
}

public static void convertNum(String n1,String n2) 
{
    int num1 = 0;
    int num2 = 0;
    try 
    {
        num1 = Int32.Parse(n1);
        num2 = Int32.Parse(n2);       
    }catch(FormatException)
    {
        MessageBox.Show("Input only numbers.");   
    }                
}

public static int sum(int n1, int n2) 
{
    int sum = n1 + n2;
    return sum;    
}

【问题讨论】:

  • “优化”是什么意思?您的意思是“更快”还是“减少代码”?
  • 最好使用int.TryParse 而不是int.Parse 并捕获异常。
  • 将大部分操作转化为方法。

标签: c# wpf methods


【解决方案1】:
private void btnSum_Click(object sender, RoutedEventArgs e)
{
String num1 = txtNum1.Text;
String num2 = txtNum2.Text;    

if(validate(num1,num2) == false)
{
    MessageBox.Show("Empty fields");
}
else 
{
  var result  =  convertNum(num1, num2);    
   MessageBox.Show("The sum is: "+result);   
}
}

public static int convertNum(String n1,String n2) 
{
int num1 = 0;
int num2 = 0;    
int result = 0;
try 
{
    num1 = Int32.Parse(n1);
    num2 = Int32.Parse(n2);  
    result = sum(num1,num2); 
    return result;
}
catch(FormatException)
{
    MessageBox.Show("Input only numbers.");   
    return result; 
}     

}

public static int sum(int n1, int n2) 
{
int sum = n1 + n2;
return sum;    
}

【讨论】:

  • 方法的每个部分都没有返回结果。是否应该在顶部声明?
  • 如果解析失败,这将显示一个消息框,显示“仅输入数字”。然后另一个说“总和是:0”。
【解决方案2】:

对于初学者,您可以从此更改“验证”功能:

public static Boolean validate(String n1, String n2) 
{
    if (n1 == null || n1.Equals("") || n2 == null || n2.Equals(""))
    {
        return false;
    }
    else 
    {
        return true;
    }
}

...到这个:

public static Boolean validate(String n1, String n2) 
{
    return ((!string.IsNullOrEmpty(n1)) && (!string.IsNullOrEmpty(n2)));
}

...还有这一行:

if(validate(num1,num2) == false)

...可能是:

if (!validate(num1,num2))

【讨论】:

  • 这些当然是很好的建议,但您还没有回答如何获取解析的整数或总和的核心问题。
【解决方案3】:

似乎只在按钮单击方法中执行所有逻辑会更简单。您真正需要做的所有验证就是检查文本值是否可以解析为整数。 int.TryParse 将为 null、空字符串和不是有效整数的字符串返回 false,所以这就是你真正需要的。

private void btnSum_Click(object sender, RoutedEventArgs e)
{
    int n1, n2;
    if(int.TryParse(txtNum1.Text, out n1) && int.TryParse(txtNum2.Text, out n2))
    {
       MessageBox.Show("The sum is: " + (n1 + n2));
    }
    else 
    {      
        MessageBox.Show("Enter valid numbers");
    }
}

【讨论】:

    猜你喜欢
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-26
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多