无法使用void方法添加数字

时间:2016-11-02 19:39:14

标签: c#

我正在尝试使用void方法将25添加到stdNumber(在文本框中输入任何内容)..

public void IncreaseStudents(int num)
    {
        int.Parse(textBox3.Text + num);
    }

    private void button1_Click(object sender, EventArgs e)
    {
        School s1 = new School();

        s1._schlName = textBox1.Text;
        s1._schLevel = textBox2.Text;
        s1._stdNumber = int.Parse(textBox3.Text);

        listBox1.Items.Add(s1._schlName);
        listBox1.Items.Add(s1._schLevel);
        listBox1.Items.Add(s1._stdNumber + IncreaseStudents(25)); //throws an error here

正如您所看到的,School是一个类名,SchName和schLevel是对象并且正在使用字符串,而stdNumber正在使用int。

我无法弄清楚如何使用void添加数字。它在方法中使用int但我需要使用void。请帮忙。

2 个答案:

答案 0 :(得分:2)

使用out参数。

示例:

public void AddNumbers(int a, int b, out int result)
{
    result = a + b;
}

像这样使用:

int a = 5;
int b = 3;
int result;
AddNumbers(a, b, out result);
Console.WriteLine(result); // Prints "8"

注意:这有点滥用out参数,我想这个任务只是教你如何使用它。实际上,当返回值完成工作时,永远不要使用out参数。

编辑:您的一组限制绝对是奇怪的,但out参数仍应适合您。

public void IncreaseStudents(int num, out int result)
{
    result = num + int.Parse(textBox3.Text);
}

private void button1_Click(object sender, EventArgs e)
{
    School s1 = new School();

    s1._schlName = textBox1.Text;
    s1._schLevel = textBox2.Text;
    s1._stdNumber = int.Parse(textBox3.Text);

    int result;
    IncreaseStudents(25, out result);

    listBox1.Items.Add(s1._schlName);
    listBox1.Items.Add(s1._schLevel);
    listBox1.Items.Add(result); 
}

答案 1 :(得分:1)

要使IncreaseStudents以您想要的方式工作,您需要更改两件事:您需要返回一个值,这意味着它不能是void。您需要更改将textBox3.Text转换为整数的方式。你不解析整个表达式textBox3.Text + num; num已经是一个数字。您需要(或想要)解析的所有内容都是textBox3.Text,因为它是一个字符串。我们将使用不同的解析方式,因此如果文本不代表数字,它将礼貌地失败而不是抛出异常。

public int IncreaseStudents(int num)
{
    int n;
    if (int.TryParse(textBox3.Text, out n))
    {
         return n + num;
    }
    else
    {
         MessageBox.Show("Not a number: " + textBox3.Text);
         return num;
    }
}

然后这行代码应该可以正常工作 - 除非s1._stdNumber是你无法添加的奇怪的东西。

listBox1.Items.Add(s1._stdNumber + IncreaseStudents(25));

但那不是作业。作业说你必须使用虚空。所以,另一个尝试:

public void IncreaseStudents(int num, out int result)
{
    int n;
    if (int.TryParse(textBox3.Text, out n))
    {
         result = n + num;
    }
    else
    {
         MessageBox.Show("Not a number: " + textBox3.Text);
         result = num;
    }
}

并且这样打电话:

int result = 0;
IncreaseStudents(25, out result)

listBox1.Items.Add(s1._stdNumber + result);
傻,但如果你的导师想要那个,那就是他想要的。