Je vous expose l'os sur le quel je suis tombé ce matin :
J'avais crée une méthode statique dans une classe et il fallait que je rajoute un bout de code dedans, rien de bien méchant, 8 lignes en plus, en dehors de toute boucle ou condition.
je rajoute donc mon petit bout de code :
Et je teste ma fonction et là, oh surprise, en pas à pas, VS saute complètement les lignes 2 et 3 ainsi donc que les 6 et 7. Renommer les variables ou changer leur types ne règle en rien le problème et je ne peux d'ailleurs plus rajouter de nouvelles variables dans la méthode quel que soit leur type ou leur position car elles sont traitées de la même façon...ou plutôt ne sont pas traitées justement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 1: float Qty_Total = (float)Qty_Mat + (float)Qty_Diff + (float)Qty_Abs; 2: float Perc_Diff = 0f; 3: float Perc_Abs = 0f; 4: if(Qty_Total > 0f) 5: { 6: Perc_Diff = (float)Qty_Diff / Qty_Total; 7: Perc_Abs = (float)Qty_Abs / Qty_Total; 8: }
Pourtant Visual Studio râle si je supprime les déclarations de ces variables(logique en soit mais pour autant il ne les "voit" pas pendant l'exécution :S ). De plus, un point d'arrêt sur les lignes 2 et/ou 3 sera automatiquement décalé sur la ligne 4, comme si elle n'existaient pas.
Je fais alors quelques tests. suppression des lignes 2 à 8 : la ligne 1 rencontre alors le même problème que les lignes 2 et 3 précédemment; Inconnue au bataillon lors de l'exécution.
Problème qui ne se pose pas si on laisse en place seulement les lignes 4,5 et 8 de la condition
Après quelques essais divers et variés, j'en viens finalement à tester ceci :
Qui "règle" mon problème car toutes les variables sont alors bien prises en compte. Cela dit, je ne peut toujours pas créer de nouvelles variables locales :S
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 1: float Qty_Total = (float)Qty_Mat + (float)Qty_Diff + (float)Qty_Abs; 2: float Perc_Diff = 0f; 3: float Perc_Abs = 0f; 4: if(Qty_Total > 0f && Perc_Diff == 0f && Perc_Abs == 0f) 5: { 6: Perc_Diff = (float)Qty_Diff / Qty_Total; 7: Perc_Abs = (float)Qty_Abs / Qty_Total; 8: }
Si quelqu'un m'a compris (même moi j'ai du mal à expliquer ce phénomène) et qu'il a déjà rencontré ce genre de problème, mais surtout s'il à une explication, je suis prenneur car c'est vraiment handicapant.
Partager