如果我写a = a +115
我的MessageBox
将返回215,但如果写为a=115;
则会显示115。
为什么?
private void button1_Click(object sender, EventArgs e)
{
int c=100;
MessageBox.Show(Count(c).ToString());
}
public int Count(int a)
{
a=115;
return a;
}
答案 0 :(得分:4)
这个问题很难破译。我认为你已经尝试了两个不同版本的函数,你命名为Count
,如下所示。
考虑这个版本的功能:
public int Count1(int a)
{
a = 115;
return a;
}
无论您传递什么值作为参数,它都会返回115。您正在使用作业a = 115
覆盖参数。因此,该参数完全没有意义。
现在是另一个版本:
public int Count2(int a)
{
a = a + 115;
return a;
}
此版本的函数在变量a
中接收参数。然后它将115添加到该值,并返回结果。所以当你这样称呼它时:
Count2(100)
返回的值是215。
如果您编写如下函数,可能会更容易理解:
public int Count1(int a)
{
return 115; //very clearly the input parameter is ignored
}
public int Count2(int a)
{
return a + 115; //but in this version, the input parameter is used
}
这些版本与您的版本完全相同,但我希望您会发现它们更容易理解。
答案 1 :(得分:1)
a = 115将整数变量设置为115,a + = 115或a = a + 115将为a的值加115,然后返回该值的结果
答案 2 :(得分:1)
如果你将100
传递给声明a = a + 115
a = 100 + 115的函数,那么它应该返回215
public int Count(int a)
{
a = a + 115; // a = 100 + 115
return a;
}
答案 3 :(得分:1)
当您执行a=115
时,会显示115
,因为您将115
分配给a
。当您使用=
时,您将正确的值分配给左侧值。当你做int c=100
时,你正在做的事情大致相同。您将c
指定为100
。
当您传递c
时,c
为100
,而您的公式为a=a+115
,则a
将为215
。传递类似于您正在执行的值时,a
将为100
。因此,当您执行a=a+115
的公式时,您说的是a=100+115
,而您将获得215
。
答案 4 :(得分:1)
是否因为您认为“a”和“c”是单独的值而产生混淆?
方法Count(int a)并不关心值的名称 最初是“c”。一旦它进入该方法,它将被引用 仅作为“a。”
public int Count(int a)
{
a = a+115;
return a;
}
所以一步一步:
1)将值100传递给Count()方法。 (a = 100)
2)Count()将a的值设置为100 + 115.(a = 215)
3)215返回到你的调用方法。
4)您的调用方法将215显示为字符串。
这有帮助吗?
答案 5 :(得分:1)
以下是您的代码的三个版本,用于演示正在发生的事情,以及我认为您真正要问的内容:
原件:
private void button1_Click(object sender, EventArgs e)
{
// Set c to 100
int c=100;
// Print the result of Count, which (see below) is ALWAYS 115.
MessageBox.Show(Count(c).ToString());
}
public int Count(int a)
{
// Set a to 115 (there is no add here, I think this is a typo)
a=115;
// Return a, which is ALWAYS 115.
return a;
}
我认为你的意思是:
private void button1_Click(object sender, EventArgs e)
{
// Set c to 100
int c=100;
// Print the result of Count, which will be 215.
MessageBox.Show(Count(c).ToString());
}
public int Count(int a)
{
// Add 115 to a.
a+=115;
// Return the result (if a == 100, this will return 215)
return a;
}
我认为你得到的是:
private void button1_Click(object sender, EventArgs e)
{
// Set c to 100
int c=100;
// Call the count function, passing in a reference for c.
Count(ref c);
// Print the value of c. This will be 215 because the Count function set c to a new value.
MessageBox.Show(c.ToString());
}
public void Count(ref int a)
{
a+=115;
}
在最后一种情况下,我将功能更改为public void Count(ref int a)
。 ref
修饰符允许函数使用对另一个变量的引用来分配新值。通常,参数是“按值”,其中传递变量值的副本。
请注意,在这种情况下,第二个版本是首选。引用参数只应在真正需要时使用,而不是替换简单的返回值。
答案 6 :(得分:0)
您的Count()
方法只会丢弃它传递的值并返回115
。如果您将a=115
替换为a=a+115
,并将其传递给100
,则会返回215.这完全符合预期。
a=a+115
表示“获取a
的值,向其添加115,并将总数分配给a
。”
这一切都按预期工作。
答案 7 :(得分:-1)
看起来您想知道变量a
如何转换为您的消息框。这是因为变量a
位于count()
函数中。更改其值会更改计数功能的结果。由于您的消息框从count
获取其值,因此您可以使用它。