我对C#很陌生,传递参数,模块化和价值返回方法对我来说非常合适。
我正试图让两个按钮相互交互。
一个按钮上有一个计数器。每次单击时,以1开头的变量都会添加另一个变量。
另一个按钮显示另一个按钮上的计数器所在的数字。
我希望这是有道理的。
private void button_Click(object sender, EventArgs e)
{
}
private int TotalCount(int count)
{
return count += 1;
}
private void buttonCount_Click(object sender, EventArgs e)
{
int totalcount;
int count;
totalcount = TotalCount(ref count);
MessageBox.Show("The number clicked is: " + totalcount);
}
答案 0 :(得分:1)
正如Garry Vass指出在这种情况下不需要引用参数但是如果使用引用参数,则方法的定义和调用都需要指定ref
private int TotalCount(ref int count)
{
return count += 1;
}
这是一个更完整地解释ref关键字的参考。
答案 1 :(得分:1)
你需要让'count'成为一个实例变量......
int count = 0;
private void button_Click(object sender, EventArgs e)
{
}
private int TotalCount()
{
++count;
return count;
}
private void buttonCount_Click(object sender, EventArgs e)
{
int totalcount = TotalCount();
MessageBox.Show("The number clicked is: " + totalcount);
}
您将'count'声明为局部变量,因此在方法的每个条目上初始化它,因此该值不是持久的。在这种情况下不需要引用参数,因此它们已被删除。
答案 2 :(得分:0)
尽管Gary Vass认为count需要是一个实例变量,但我不认为他的答案是编码它的正确方法。
方法名称非常重要,特别是随着代码库的增长,你应该遵循“最小惊讶”的原则。在这种情况下,方法的名称应该表明它将做什么,它不应该有隐藏的副作用。见http://www.atalasoft.com/cs/blogs/stevehawley/archive/2006/02/27/9590.aspx
名称TotalCount
表示它将返回总计数。该名称没有任何内容表明它实际上将修改数据。
我将采取的路线是:
int count = 0;
private int IncrementCount() {
count++;
return count;
}
private void buttonCount_Click(object sender, EventArgs e)
{
int totalcount = IncrementCount();
MessageBox.Show("The number clicked is: " + totalcount);
}
差异很微妙。但是,有人浏览只需 buttonCount_Click方法就可以很好地了解IncrementCount()
做什么,而无需实际调查该代码。