C# 执行搜索填充向量时出错
搜索填充向量C# 执行搜索填充向量时出错,c#,C#,搜索填充向量PegaTipo[]时出现返回错误,错误为: “System.NullReferenceException”:对象引用未设置为 对象的实例” 类是Pegatipo[]返回向量: public PegaTipo[] buscaFunc(string func, int ID_empresa) { SqlDataReader objReader; SqlCommand objcmd = null; PegaTipo[] re
PegaTipo[]
时出现返回错误,错误为:
“System.NullReferenceException”:对象引用未设置为
对象的实例”
类是Pegatipo[]
返回向量:
public PegaTipo[] buscaFunc(string func, int ID_empresa)
{
SqlDataReader objReader;
SqlCommand objcmd = null;
PegaTipo[] retornaInfo = null;
ArrayList arr = new ArrayList();
int t;
vsql = "SELECT [NOME], [CPFCNPJ], [HIDE] FROM CLIENTE WHERE TIPO = @TIPO and ID_EMPRESA = @ID_EMPRESA";
if (this.Conectar())
{
try
{
objcmd = new SqlCommand(vsql, objCon);
objcmd.Parameters.Add(new SqlParameter("@TIPO", func));
objcmd.Parameters.Add(new SqlParameter("@ID_EMPRESA", ID_empresa));
objReader = objcmd.ExecuteReader();
while (objReader.Read())
{
arr.Add(objReader.GetString(0));
arr.Add(objReader.GetString(1));
arr.Add(objReader.GetBoolean(2));
}
t = arr.Count / 3;
int j = 1;
retornaInfo = new PegaTipo[t];
for (int i = 0; i < t; i++, j++)
{
retornaInfo[i].nome = Convert.ToString(arr[0 * j]);
retornaInfo[i].tipo = Convert.ToString(arr[1 * j]);
retornaInfo[i].hide = Convert.ToBoolean(arr[2 * j]);
}
return retornaInfo;
}
catch
{
throw;
}
finally
{
this.Desconectar();
}
}
return retornaInfo;
}
您正在初始化PegaTipo数组,但没有在数组中创建PegaTipo实例,因此以下语句: retronainfo[i].nome=Convert.ToString(arr[0*j]) 正在引发您的异常,因为RetronaInfo[i]为null。您应该在循环中执行此操作:
for (int i = 0; i < t; i++, j++)
{
retornaInfo[i] = new PegaTipo();
retornaInfo[i].nome = Convert.ToString(arr[0 * j]);
retornaInfo[i].tipo = Convert.ToString(arr[1 * j]);
retornaInfo[i].hide = Convert.ToBoolean(arr[2 * j]);
}
for(int i=0;i
for (int i = 0; i < t; i++, j++)
{
retornaInfo[i] = new PegaTipo();
retornaInfo[i].nome = Convert.ToString(arr[0 * j]);
retornaInfo[i].tipo = Convert.ToString(arr[1 * j]);
retornaInfo[i].hide = Convert.ToBoolean(arr[2 * j]);
}