我正在使用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])
任何人都可以指出我哪里出错了。 感谢
答案 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])