C#数组访问问题

时间:2012-03-14 08:57:58

标签: c# arrays

我正在使用Asp.net/C#,我已宣布integer array如下public int[] recno; 由于我不知道array的确切大小,但是在function内我根据表格中customer_id's的数量了解其大小。这是{{1 }}

function

当我尝试以下列方式调用接受客户public void GetRecordNo() { recid = from id in dt.cust_masters select id; recno = new int[recid.Count()]; for (int i = 0; i < recid.Count(); i++) { recno[i] = Convert.ToInt32(recid.ElementAt(i).customer_id); } } 的函数ShowRecord(int index)

id

它给了我一个错误

ShowRecord(recno[0])

任何人都可以指出我哪里出错了。 感谢

3 个答案:

答案 0 :(得分:3)

您可以简化代码:

recid = from id in dt.cust_masters
          select id.customer_id;

//recno = new int[recid.Count()];
recno = recid.ToArray();
// remove for-loop

找到/防止你的空引用问题:

void  ShowRecord(int index)
{
    if (index < 0 || index >= recno.Length)
       throw new InvalidArgumentException("index");

    var id = recno[index];
    ...
}

答案 1 :(得分:3)

为什么你可以使用:

public void GetRecordNo()
{
    var recno=(
        from id in dt.cust_masters
        select id.customer_id
    ).ToArray();
}

答案 2 :(得分:1)

首先通过设置断点并将鼠标悬停在ShowRecord(recno[0])的参数recno上来检查哪个对象为空。它是空的吗?如果是,请确保在调用ShowRecord之前实际调用了GetRecordNo()方法。

或者用它来访问recno:

public int[] RecNo {
    get {
        if (recno == null) { GetRecNo(); }
        return recno;
    }
}

然后像

一样使用它
ShowRecord(RecNo[0])