C# 方法的返回值
我正在创建20个文本框的计算器-10个用于输入,10个用于输出。创建一个方法后,我将parameterdefined放在前10个文本框中,然后将值返回给main方法 要获取所有10个值,是否真的需要为所有10个或更多文本框编写代码,因为我已经开始了,或者有更聪明的方法如何传递到方法textbox参数并一次返回多个值 更新: 正如您所建议的,我创建了元组列表并使用foreach循环遍历它们,但现在我得到了错误: 错误1无法将类型“int”隐式转换为“string”。你能帮我指出问题出在哪里吗 私有无效按钮1\u单击对象发送者,事件参数eC# 方法的返回值,c#,C#,我正在创建20个文本框的计算器-10个用于输入,10个用于输出。创建一个方法后,我将parameterdefined放在前10个文本框中,然后将值返回给main方法 要获取所有10个值,是否真的需要为所有10个或更多文本框编写代码,因为我已经开始了,或者有更聪明的方法如何传递到方法textbox参数并一次返回多个值 更新: 正如您所建议的,我创建了元组列表并使用foreach循环遍历它们,但现在我得到了错误: 错误1无法将类型“int”隐式转换为“string”。你能帮我指出问题出在哪里吗 私有
{
List<Tuple<TextBox,TextBox>> tuple1 = new List<Tuple<TextBox,TextBox>>();
tuple1.Add(Tuple.Create(textBox1, textBox2));
tuple1.Add(Tuple.Create(textBox3, textBox4));
tuple1.Add(Tuple.Create(textBox5, textBox6));
tuple1.Add(Tuple.Create(textBox7, textBox8));
foreach (Tuple<TextBox,TextBox> box in tuple1)
{
var inputBox = box.Item1;
var outputBox = box.Item2;
outputBox.Text = MethodA(Convert.ToInt32(inputBox.Text));
}
}
private int MethodA(int Parameter1)
{
int A = Parameter1;
int B = 20;
int C;
if (A == 16 && B == 20) { C = 15; } else if (A == 20 && B == 20) { C = 25; } else { C = 0; };
return C;
}
您可以将所有输入输出文本框组合存储在构造函数中:
private List<Tuple<TextBox, TextBox>> textBoxes = new List<Tuple<TextBox, TextBox>>();
public Form1() {
InitializeComponents();
textBoxes.add(Tuple.Create(textBox1, textBox4);
// ...
}
这可能不是最好的答案,但它会起作用:
public class Extensions
{
public MethodA(this TextBox tb)
{
tb.Text = (Convert.ToInt32(tb.Text) + 5).ToString();
}
}
现在你可以打电话:
textBox1.MethodA();
textBox2.MethodA();
……等等
这不一定是推荐的,但这是一种方法,您可以简单地多次这样做
如果您不想重复这一点,那么最好以相同的方式内联逻辑:
textBox1.Text = (Convert.ToInt32(textBox1.Text) + 5).ToString();
textBox2.Text = (Convert.ToInt32(textBox2.Text) + 5).ToString();
textBox3.Text = (Convert.ToInt32(textBox3.Text) + 5).ToString();
1创建一个字典或元组列表来链接文本框对,2在集合中循环从一个文本框获取输入并将输出放入另一个文本框。从一个方法返回多个值不是很好的做法,在这里也没有必要。您使用的是窗口窗体吗?是的,我使用的是窗口窗体。我猜这个Tuple类对于像我这样的新手来说有点太复杂了,所以我会搜索一下它到底是什么,它做了什么,然后回到这篇文章。谢谢你们的帮助。@D Stanley,@Michael有什么想法吗,伙计们?
textBox1.Text = (Convert.ToInt32(textBox1.Text) + 5).ToString();
textBox2.Text = (Convert.ToInt32(textBox2.Text) + 5).ToString();
textBox3.Text = (Convert.ToInt32(textBox3.Text) + 5).ToString();