J'ai une liste d'objets. Je voudrais maintenant sortir la liste mais aussi ajouter des chiffres devant comme ça ...

1] élément [0]

2] élément [1]

3] élément [2]

J'ai cette fonction

        private void ListAnimals()
        {
            foreach (var pet in _petslist)
            {
                Console.WriteLine(pet);
            }
        }

Alors j'appelle cette fonction comme ça

 public void Play()
        {
            Console.WriteLine("You have these pets in your list...");
            ListAnimals();
            Console.WriteLine("Which pet would you like to play with?");
            string input = Console.ReadLine().ToLower();

            switch (input)
            {
                case "pet1":
                    _petslist[0].Interact();
                    break;

                case "pet2":
                    _petslist[1].Interact();
                    break;

                case "pet3":
                    _petslist[2].Interact();
                    break;

                default:
                    Console.WriteLine("You do not own that pet, please try again");
                    break;
            }
        }

Ma question, puis-je en quelque sorte afficher des nombres devant les éléments de la liste dans ma fonction ListAnimals () afin que je puisse utiliser ce nombre dans l'instruction switch au lieu du nom réel de l'animal? J'ai essayé de remplacer ToString () dans ma classe animale, j'ai essayé avec un rembourrage et j'ai également essayé d'ajouter un tableau de nombres et d'utiliser la boucle for pour afficher les nombres dans le tableau et lister les éléments proches les uns des autres.

0
Nirre 28 août 2020 à 18:16

2 réponses

Meilleure réponse

Au lieu de

foreach (var pet in _petslist)
{
    Console.WriteLine(pet);
}

Faire

for (int i = 0; i < _petslist.Count; i++)
{
    var pet = _petslist[i];
    Console.WriteLine($"{i + 1}] {pet}");
}

De plus, au lieu d'une instruction switch par la suite, vous devriez simplement lire la valeur entière dans input, puis l'utiliser directement:

_petslist[input - 1].Interact();
1
neizan 28 août 2020 à 15:35

Vous pouvez afficher des nombres facilement si vous utilisez une boucle for:

private void ListAnimals()
{
    for (var i = 0; i < _petslist.Count; i++)
    {
        Console.WriteLine(i + 1 + "] " + _petslist[i]);
    }
}
1
Rufus L 28 août 2020 à 15:42