不可见的数组元素

时间:2012-06-25 12:30:16

标签: c#

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++;
    }
}

3 个答案:

答案 0 :(得分:2)

i == 10时,您将看到数组的第11个元素。这是因为数组索引以0开头,因此i0转到1011或更高的数字会给您一个例外。我建议你在尝试访问阵列之前检查一下。像这样:

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个元素。