Bonjour,

Grand débutant en C# et de manière général en programmation, je commence à peine l’objet. N’hésitez donc pas à me rappeler à l’ordre si je m’embrouille dans les notions, les termes ou si vous voyez des choses disgracieuses et des mauvaises habitudes dans mon code ^^

Pour jouer avec les objets j’effectue quelques tests pour mettre en pratiques les notions que j’apprends.

Dans le cas présent un vendeur possède un étal comprenant 6 fruits (et légumes) différents. Ces fruits sont générés aléatoirement, avec trois propriétés : le type (pommes ou poires par exemple), la couleur et le statut (mûre ou vert par exemple).

L’étal contenant les fruits est une liste contenant mes instances de fruits.

A la création d’un fruit, le constructeur de la classe légume pioche aléatoirement parmi des listes et tableaux présents dans la classe les caractéristiques de mon futur fruit ou légume, grâce à la méthode Random.

Problème : les propriétés à la sortie sont identiques pour tous les fruits. Si je relance le programme le résultat est différent mais les 6 fruits et légumes sont toujours identiques entre eux (6 pommes vertes puis 6 raisins jaunes).

Voici mes 3 méthodes :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
    class Program
    {
        static void Main(string[] args)
        {
            Vendeur Bob = new Vendeur(6);
 
            foreach (Legumes Legu in Bob.Liste_Legumes_Vendeur)
            {
                Console.WriteLine("J'ai des " + Legu.Type + " de couleur " + Legu.Taille + " qui sont " + Legu.Statut);
            }
        }
    }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
    public class Vendeur
    {
        public List<Legumes> Liste_Legumes_Vendeur = new List<Legumes>();
 
        public Vendeur(int List_lenght)
        {
            for (int i = 0; i < List_lenght; i++)
            {
                Liste_Legumes_Vendeur.Add(new Legumes(i));
            }
        } 
    }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    public class Legumes
    {
        private List<string> Types_Liste = new List<string> { "Tomates", "Raisins", "Pommes", "Poires", "Poivrons" };
        private string[] Tailles_Liste = new string[] { "verte", "jaune", "rouge" };
        private string[] Statuts_Liste = new string[] { "verts", "mûres", "pourrits" };
 
        public string Type { get; set; }
        public string Taille { get; set; }
        public string Statut { get; set; }
 
        Random rnd = new Random();
 
        public Legumes(int i)
        {
            Type = Types_Liste[rnd.Next(0,Types_Liste.Count)];
            Taille = Tailles_Liste[rnd.Next(0,Tailles_Liste.Length)];
            Statut = Statuts_Liste[i % Statuts_Liste.Length];
        }
    }
Quelqu’un aurait une idée d’où pourrai provenir cette erreur ?

Notes : l'utilisation d'un modulo et entier pour le troisième paramètre me permet bien d'avoir des résultat qui changent, contrairement à ceux qui utilisent l'aléatoire. L'utilisation d'une liste et de deux tableaux pour stocker les paramètres possibles me sert juste à tester les deux versions.

Merci pour votre patience ^^