messagebox显示每个数组元素1到9但不显示10和11元素? 为什么我无法达到第10和第11个元素 我也尝试使用richtext框,但我再也看不到了
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int i;
int[] array1 = new array1[11];
private void textBox1_TextChanged(object sender, EventArgs e)
{
try
{
array1[i] = int.Parse(textBox1.Text) % 10;
MessageBox.Show(dizi[i].ToString());
}
catch
{
if (i > 11)
{
//MessageBox.Show("it can't be big than 11");
}
}
i++;
}
}
答案 0 :(得分:2)
当i == 10
时,您将看到数组的第11个元素。这是因为数组索引以0
开头,因此i
从0
转到10
。 11
或更高的数字会给您一个例外。我建议你在尝试访问阵列之前检查一下。像这样:
if (i < 11) { // or if (i < dizi.Length)
try
{
dizi[i] = int.Parse(textBox1.Text);
MessageBox.Show(dizi[i].ToString());
i++;
}
catch (Exception ex)
{
// You can still get errors if the text cannot be parsed to an int
}
}
答案 1 :(得分:1)
是的,你已经得到了答案,但是我真的要小心变量限制。
Type Size (in bits) Range
----- -------- ----------
sbyte 8 -128 to 127
byte 8 0 to 255
short 16 -32768 to 32767
ushort 16 0 to 65535
int 32 -2147483648 to 2147483647
uint 3 0 to 4294967295
long 64 -9223372036854775808 to 9223372036854775807
ulong 64 0 to 18446744073709551615
char 16 0 to 65535
float 32 7 digits 1.5 x 10-45 to 3.4 x 1038
Double 64 15-16 digits 5.0 x 10-324 to 1.7 x 10308
Decimal 128 28-29 decimal places 1.0 x 10-28 to 7.9 x 1028
答案 2 :(得分:0)
int
的最大值是2147483647,因此如果您键入的任何数字大于int.Parse()
,则{{1}}将无声地失败。正如其他人所提到的,没有第11个元素。