我有这个代码,似乎太重复了,所以我想用一个循环来改善它:
//Converts a text in a integer using a custom method based on int.TryParse
int a1 = determinantes.aEntero(a1Box.Text);
int a2 = determinantes.aEntero(a2Box.Text);
int a3 = determinantes.aEntero(a3Box.Text);
int b1 = determinantes.aEntero(b1Box.Text);
int b2 = determinantes.aEntero(b2Box.Text);
int b3 = determinantes.aEntero(b3Box.Text);
int c1 = determinantes.aEntero(c1Box.Text);
int c2 = determinantes.aEntero(c2Box.Text);
int c3 = determinantes.aEntero(c3Box.Text);
//I pass those new ints to a method to do something with them
resultado.Text = determinantes.detGrado3(a1, a2, a3, b1, b2, b3, c1, c2, c3).ToString();
第一部分可以使用数组a [1],a [2]来完成......但是我需要更改变量的名称以使用相同的字母开头。
第二部分我不知道如何做到这一点。我虽然做了像
这样的事情 a[counter] = determinantes.aEntero(a[counter]Box.Text);
但显然这不起作用。那么,你有什么想法我可以在该代码中使用循环吗?
谢谢;)
[UPDATE] 我也在“清除”按钮的代码中遇到同样的问题:
a1Box.Text = "";
a2Box.Text = "";
a3Box.Text = "";
b1Box.Text = "";
b2Box.Text = "";
b3Box.Text = "";
c1Box.Text = "";
c2Box.Text = "";
c3Box.Text = "";
d1Box.Text = "And so on till the infinite!";
[UPDATE] 最后我来了。我认为现在就是这样。谢谢大家!
TextBox[] boxes = new TextBox[] { a1Box, a2Box, a3Box, b1Box, b2Box, b3Box,
c1Box, c2Box, c3Box };
int[] enteros = new int[boxes.Length];
for (int f = 0; f < boxes.Length; f++) {
enteros[f] = determinantes.aEntero(boxes[f].Text);
}
resultado.Text = determinantes.detGrado3Arr(enteros).ToString();
答案 0 :(得分:2)
那么,您对我在该代码中如何使用循环有什么想法吗?
您将所有类似的变量放入容器(数组或List<>
可能是最简单的),然后循环它们。
作为一般编程提示:当您注意到自己给变量赋予数字时,请停止并使用容器。
答案 1 :(得分:0)
我说要将文本值抛出到数组中,循环遍历,然后分配给第二个数组,然后告诉消费函数将其作为参数。
伪:
string[] boxes = new string[] {a1box.Text, a2box.Text, ...etc etc ...lastbox.Text};
int[] results = new int[boxes.length];
for(i = 0; i < results.Count; i++)
{
results[i]= determinantes.aEntero(boxes[i]);
}
resultado.Text = determinantes.detGrado3(results)
//you should return a string
//instead of using the ToString() method if possible`
此外,还有一种内置的方式可以处理您的“清除”问题。问题。
foreach(Control c in this.Controls)
{
if(c.GetType = typeof(TextBox))
{ ((TextBox)c).Clear(); } //or ((TextBox)c).Text = string.Empty, if you prefer
}
答案 2 :(得分:0)
这可能无法满足您的确切需求,但我认为它会接近您想要的。
library(data.table)
data <- data.table(id = c(11111111111111, 11111111111112))
data[id == 11111111111111]
data[as.numeric(id) == 11111111111111]
data[, .N, by = id]
data[, .N, by = as.numeric(id)]
data[, .N, by = as.character(id)]
答案 3 :(得分:0)
var ints = new Dictionary<TextBox, int>();
foreach(var tb in new[] {
a1Box, a2Box, a3Box, a4Box, a5Box, ... , anBox})
ints.Add(tb, determinantes.aEntero(tb.Text));
获取任何框的整数值,
var x = ints[a1Box];
但更好的是,只需动态执行...在TextBox上创建扩展名。
public int IntegerValue(TextBox this tb)
{ return determinantes.aEntero(tb.Text)); }
然后,在代码中的任何位置,您只需编写a1Box.IntegerValue()
var x = a1Box.IntegerValue();