L'ajout d'un élément à la liste de string[]
Je suis en train d'ajouter quelques lignes que j'ai obtenu à partir d'un DataTable à ma liste à l'aide de cette structure:
protected struct roleProperties
{
public string roleName { get; set; }
public string[] functionTitle { get; set; }
}
Comme vous pouvez le voir je veux plus de chaînes à l'intérieur de la méthode Title
chaîne
J'ai essayé de faire comme ceci:
public void getRoleFuncs(int roleId)
{
List<roleProperties> roles = new List<roleProperties>();
int i = 1;
SqlParameter ro_id = new SqlParameter("@ro_id", roleId);
string q = "SELECT ro_name, fu_title FROM roles INNER JOIN rolefunctions ON roles.ro_id = rolefunctions.fk_role_id INNER JOIN functions ON rolefunctions.fk_func_id = functions.fu_id WHERE ro_id = @ro_id";
SqlDataReader r = gm.returnReader(q, ro_id);
while (r.Read())
{
roleProperties item = new roleProperties();
item.roleName = r["ro_name"].ToString();
foreach (IDataRecord str in r)
{
item.functionTitle[i] = r["fu_title"].ToString();
i++;
}
roles.Add(item);
}
}
Mais je reçois une référence nulle sur cette ligne:
item.functionTitle[i] = r["fu_title"].ToString();
N'importe qui peut voir ce que je fais de mal?
InformationsquelleAutor mackwerk | 2013-02-25
Vous devez vous connecter pour publier un commentaire.
Votre tableau n'est pas initialisé et donc nulle puisque vous ne connaissez pas la taille de la matrice, vous allez avoir besoin, il semble être une approche plus appropriée à utiliser une liste au lieu
changer votre struct pour
et puis changer
à
J'ai changé la structure d'une classe, car il est mutable et mutable structures sont mal.
item.functionTitle
estnull
car les tableaux sont des types référence et vous n'avez pas initialisé la propriété de n'importe où (donc, il a la valeur par défaut:null
pour un type de référence).Même si ce n'était pas un problème (disons
functionTitle
est un tableau vide)item.functionTitle[i]
serait à nouveau jeter parce qu'il essaie d'accéder à un index qui est en dehors des limites. Et enfin, vous avez un tout-en-un message d'erreur: le premier élément d'un tableau a l'index0
, pas1
.Vous pouvez résoudre tous les ci-dessus en modifiant le code de
Initialiser le tableau en premier.
Count
sur un lecteur autant que je sache, pouvez-vous? L'IDE renvoie une erreur si je l'ai essayer.