-5

我在编写函数并将参数传递给它时遇到问题。

我的问题是我创建了名为mySum. 我已经展示了下面的代码。

注意:我使用了两个文本框从用户那里获取值,该函数应该将这两个值相加并显示在MessageBox.

void mySum(int a, int b)
{
    int ans;
    ans = a + b;
    MessageBox.Show(ans.ToString());
}

private void button1_Click(object sender, EventArgs e)
{
    //Here i want to ass two text boxes values as given below.
    mySum(txtbox1.text,txtbox2.text); //Here it shows me the error
}
4

9 回答 9

2

您的函数期望integer作为参数。但是您正在传递一个字符串( Text 属性返回字符串)。所以转换为它。

mySum(Convert.ToInt32(txtbox1.Text),Convert.ToInt32(txtbox2.Text));

您可以在转换之前检查 null 值/是否为有效数值,否则 ToInt32 函数将抛出异常。利用Int32.TryParse

int value1=0;
int value2=0;
int result;

if (!Int32.TryParse(txtbox1.Text, out value1))
{   
   MessageBox.Show("Not valid number");
   return;
}  
if (!Int32.TryParse(txtbox2.Text, out value2))
{   
   MessageBox.Show("Not valid number");
   return;
}

mySum(value1,value2);
于 2012-07-16T17:24:59.210 回答
2

将文本框值解析为整数:

mySum(int.Parse(txtbox1.text),int.Parse(txtbox2.text));

添加适当的错误处理。

于 2012-07-16T17:26:03.057 回答
2
private void button1_Click(object sender, EventArgs e)
    {

          mySum(Int32.Parse(txtbox1.text), Int32.Parse(txtbox2.text));          

    }
于 2012-07-16T17:26:09.547 回答
2

只需这样做:

int mySum(string a, string b)
    {
       return Convert.ToInt32(a) + Convert.ToInt32(b);
    }

在文件后面的代码中,像这样调用上面的函数:

    MessageBox.Show(mySum(txtbox1.Text,txtbox2.Text)..ToString());
于 2012-07-16T17:26:51.840 回答
2

问题是 thsat txtBox1.Text 不是存储为 int,而是存储为字符串。您需要使用 System.Int32.TryParse安全地查看文本是否为字符串并将其转换为 int。

private void button1_Click(object sender, EventArgs e)
{

     int firstInt = -1;
     int secondInt = -1;

    if(!System.Int32.TryParse(txtbox1.Text, out firstInt)
    {
       MessageBox.Shw("Invalid value in Textbox 1");
       return; // Stop procesing
    }
    if(!System.Int32.TryParse(txtbox2.Text, out secondInt)
    {
       MessageBox.Show("Invalid value in Textbox 2");
       return; // Stop procesing
    }
    //Here i want to add the values from two text boxes values as given below.
     mySum(firstInt, secondInt); //Here it shows me the error . Please help me.           
 }
于 2012-07-16T17:28:43.637 回答
1

您将 s 传递string给期望ints 尝试的函数

mySum(int.Parse(txtbox1.text),int.Parse(txtbox2.text))
于 2012-07-16T17:25:45.587 回答
1

Textbox.Text属性返回字符串。在你的函数声明中,你传递了两个整数。所以你需要将字符串转换为整数。

于 2012-07-16T17:25:55.100 回答
1

C# 没有从 String 到 Int32 的隐式转换,因此如果您的方法采用 int 参数,则必须在传入之前将该值转换为 int。

于 2012-07-16T17:28:20.423 回答
1

这不是执行此操作的好方法。

我推荐这个:

public int mySum(int a, int b)
{
    return a + b;
}

然后在您的活动中,执行以下代码:

var t1 = int.Parse(txtbox1.text);
var t2 = int.Parse(txtbox2.text);
MessageBox.Show(mySum(t1,t2))

...请记住,如果您的文本框实际上没有保存整数值,则会出现问题。您可以查看int.TryParse()更强大的解决方案。

于 2012-07-16T17:29:00.113 回答