Le texte suivant est un extrait de mon code :
public class AllIntegerIDs
{
public AllIntegerIDs()
{
m_MessageID = 0;
m_MessageType = 0;
m_ClassID = 0;
m_CategoryID = 0;
m_MessageText = null;
}
~AllIntegerIDs()
{
}
public void SetIntegerValues (int messageID, int messagetype,
int classID, int categoryID)
{
this.m_MessageID = messageID;
this.m_MessageType = messagetype;
this.m_ClassID = classID;
this.m_CategoryID = categoryID;
}
public string m_MessageText;
public int m_MessageID;
public int m_MessageType;
public int m_ClassID;
public int m_CategoryID;
}
J'essaie d'utiliser le code suivant dans ma fonction main() :
List<AllIntegerIDs> integerList = new List<AllIntegerIDs>();
/* some code here that is ised for following assignments*/
{
integerList.Add(new AllIntegerIDs());
index++;
integerList[index].m_MessageID = (int)IntegerIDsSubstring[IntOffset];
integerList[index].m_MessageType = (int)IntegerIDsSubstring[IntOffset + 1];
integerList[index].m_ClassID = (int)IntegerIDsSubstring[IntOffset + 2];
integerList[index].m_CategoryID = (int)IntegerIDsSubstring[IntOffset + 3];
integerList[index].m_MessageText = MessageTextSubstring;
}
Le problème est là : J'essaie d'imprimer tous les éléments de ma liste en utilisant une boucle for :
for (int cnt3 = 0 ; cnt3 <= integerList.FindLastIndex ; cnt3++) //<----PROBLEM HERE
{
Console.WriteLine("{0}\t{1}\t{2}\t{3}\t{4}\n", integerList[cnt3].m_MessageID,integerList[cnt3].m_MessageType,integerList[cnt3].m_ClassID,integerList[cnt3].m_CategoryID, integerList[cnt3].m_MessageText);
}
Je veux trouver le dernier élément afin d'égaliser cnt3 dans ma boucle for et d'imprimer toutes les entrées de la liste. Chaque élément de la liste est un objet de la classe AllIntegerIDs comme mentionné ci-dessus dans l'exemple de code. Comment puis-je trouver le dernier élément valide de la liste ?
Dois-je utiliser quelque chose comme integerList.Find(integerList[].m_MessageText == null ;
Si je l'utilise, il faudra un indice qui ira de 0 à un maximum quelconque. Cela signifie que je devrai utiliser une autre boucle for que je n'ai pas l'intention d'utiliser. Existe-t-il un moyen plus court/meilleur ?
Merci, Viren
0 votes
@Viren : J'ai indenté le code pour qu'il s'affiche correctement. Si vous avez fait des modifications sous ma responsabilité, pouvez-vous vous assurer que je ne les ai pas annulées ?
9 votes
Cela n'a rien à voir avec votre question, mais vous ne devriez vraiment pas implémenter un finaliseur à moins qu'il ne soit nécessaire.
0 votes
Cela n'a rien à voir avec la question, mais pour des raisons de lisibilité et de maintenabilité, je vous suggère de faire ce qui suit
AllIntegerIDs newItem = new AllIntegerID();
utilisez-le pour affecter tous les champs et puis appelezintegerList.Add(newItem)
. Ou bien utilisez des propriétés plutôt que des champs et utilisez la syntaxe de l'initialisateur d'objet C# 3.0.