我尝试将InputBox转换为Int32,但它不起作用,有人知道如何解决这个问题吗?
private void button1_Click(object sender, EventArgs e)
{
int[] tab = null;
for (int i = 0; i < numericUpDown1.Value; ++i)
{
tab[i] = Convert.ToInt32(Interaction.InputBox("Value", "Array"));
// Error here
}
textBox1.Text = "Plus petit: " + Smaller(tab).ToString();
//textBox1.Text = "Plus grand: " + result.ToString();
}
private int Smaller(int[] array)
{
var result = array[0];
foreach (int tabs in array)
{
if (result > tabs)
{
result = tabs;
}
}
return result;
}
错误:
Object reference not set to an instance of an object.
答案 0 :(得分:2)
您没有初始化阵列。将int[] tab = null;
更改为int[] tab = new int[numericUpDown1.Value];
如果未初始化数组,它将保持为null,因此tab[i]
将始终为null。方括号中的值将告诉编译器你的数组会很大。
如果您不知道阵列的大小,您不想知道或者您根本不在乎,您可能想要使用List<T
&gt;:
private void button1_Click(object sender, EventArgs e)
{
List<int> tab = new List<int>();
for (int i = 0; i < numericUpDown1.Value; ++i)
{
tab.Add(Convert.ToInt32(Interaction.InputBox("Value", "Array")));
// Error here
}
textBox1.Text = "Plus petit: " + Smaller(tab).ToString();
//textBox1.Text = "Plus grand: " + result.ToString();
}
private int Smaller(List<int> list)
{
var result = list[0];
foreach (int tabs in list)
{
if (result > tabs)
{
result = tabs;
}
}
return result;
}
//编辑: 如果你想保存一些代码并且只想从该列表中获取最小的int值,请使用
textBox1.Text = "Plus petit: " + tab.Min().ToString();
答案 1 :(得分:1)
button1_Click()
tab
为空,因此您无法分配到tab[i]
。
您应首先制作tab = new int[numericUpDown1.Value];