myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Rund um die Programmierung » [gelöst] IF Bedingung nicht korrekt ausgewertet
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

[gelöst] IF Bedingung nicht korrekt ausgewertet

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Reggi
myCSharp.de-Mitglied

Dabei seit: 26.10.2016
Beiträge: 25


Reggi ist offline

[gelöst] IF Bedingung nicht korrekt ausgewertet

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo zusammen,

ich hoffe Jemand von euch hatte solch ein Problem auch schon.
Es ist irgendwie unlogisch und ich hoffe banal...

In einer IF-Bedingung wird die Anzahl Farben eines Artikels gezählt. Je nachdem, ob es mehr als eine gibt oder nicht, soll eben entweder die eine Funktion aufgerufen werden oder die andere.

Da das aber nicht funktioniert hatte, bin ich im Debugger auf das gestoßen, was man im Anhang sehen kann.
Die Bedingung ist eindeutig false und trotz dem wird der falsche Zweig ausgeführt.

Ich dachte erst, dass es vllt sein kann, dass die Count-Eigenschaft einen anderen Wert hat, als die Count()-Methode und habe das gerade geändert und getestet. Leider ohne Erfolg.

Was kann ich da noch versuchen? Oder besser WO kann ich noch suchen?


Liebe Grüße
Reggi

Reggi hat dieses Bild (verkleinerte Version) angehängt:
Fehler.png
Volle Bildgröße

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Reggi am 09.01.2018 14:02.

09.01.2018 11:22 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
p!lle
myCSharp.de-Mitglied

avatar-3556.jpg


Dabei seit: 22.02.2007
Beiträge: 991
Entwicklungsumgebung: Visual Studio (Community) 2017


p!lle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Kann ich nicht nachstellen.
Wo kommt die Count()-Methode her, aus einer Erweiterung? Standardmäßig gibt es diese nämlich nicht. Sorry, using fehlte.

Ansonsten versuche mal das:
 [Tutorial] Vertrackte Fehler durch Vergleich von echtem Projekt mit minimalem Testprojekt finden

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von p!lle am 09.01.2018 11:33.

09.01.2018 11:32 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 12.902
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

In der Condition wird die Eigenschaft verwendet; in der Schleife die Methode.
Das könnte sich also hier durchaus um eine Race Condition aufgrund erneuten Anstartens des Enumerators handeln.

Der Code sieht insgesamt ziemlich suspekt aus.
Wieso wird ständig irgendwas resolved? Das gehört sicherlich nicht im Mix in den Code.
Das ist nicht der Sinn von IoC.

Alternative alte Buildsymbols; mal das Projekt säubern während Visual Studio nicht gestartet ist - kommt vor.
09.01.2018 11:38 Beiträge des Benutzers | zu Buddylist hinzufügen
OlafSt OlafSt ist männlich
myCSharp.de-Mitglied

Dabei seit: 02.05.2011
Beiträge: 62
Entwicklungsumgebung: VS 2015 Community
Herkunft: HH


OlafSt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Vielleicht hilft ja auch ein simples Umladen in eine Variable.

C#-Code:
int j=colours.Count;
if (j > 0)
{
   for (i=0; i<= j; i++)
09.01.2018 13:11 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Reggi
myCSharp.de-Mitglied

Dabei seit: 26.10.2016
Beiträge: 25

Themenstarter Thema begonnen von Reggi

Reggi ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Also erstmal danke an alle.

Ob man das jetzt Fehler nennen kann weiß ich nicht, aber beim weiter Debuggen ist das Programm dann doch in der Elsebedingung gelandet.

Also falscher Alarm und der Fehler selbst kommt davon, dass einige Daten, die ich importiert hatte, anders aufgebaut sind und so nicht mit den zwei Regeln abgefangen werden traurig .

Und Abt...
Ich hab das mit den Containern nur so halb übergeben bekommen von einem ehemaligen Kollegen. Ich muss zu meiner Schande gestehen, dass ich mich nicht gründlich in das Thema eingearbeitet habe.
Ich werde mir bei Gelegenheit mal ansehen, wie man die richtig benutzt. Danke für den Hinweis.
09.01.2018 14:02 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Taipi88 Taipi88 ist männlich
myCSharp.de-Mitglied

avatar-3220.jpg


Dabei seit: 02.02.2010
Beiträge: 955
Entwicklungsumgebung: VS 2010
Herkunft: Mainz


Taipi88 ist online

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi,

nur zum IoC mal als Grundüberlegung:
So wie du den IoC-Container verwendest - wird dieser quasi als new-Operator verwendet. Klingt zwar im ersten Moment ganz witzig - und funktioniert auch so im Code - hat aber den fatalen Nachteil, dass wenn jemand anders deine Klasse benutzt - derjenige absolut keinen Schimmer davon hat, dass du:
a) IoC einsetzt
b) Welche Klassen er im Container registriert haben müsste, damit eine Verwendung nicht in die Hose geht

Kurzum: Auf diese Art sorgst du dafür, dass du zwar Abhängigkeiten auf direkte Implementierungen vermeidest - bindest dich aber auf der anderen Seite an das IoC-Framework - und schlimmer - sorgst dafür, dass nicht einmal die Abhängigkeiten zu bestimmten Schnittstellen von außen ersichtlich sind und man den Code quasi nur per Trial&Error verwenden kann.

LG
09.01.2018 14:22 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
LaTino LaTino ist männlich
myCSharp.de-Poweruser/ Experte

avatar-4122.png


Dabei seit: 03.04.2006
Beiträge: 2.969
Entwicklungsumgebung: Rider / VS2019 / VS Code
Herkunft: Thüringen


LaTino ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zu dem, was Taipi88 grade sagte, noch ein wenig Lesestoff:

 ServiceLocator is an anti-pattern

(Beim refactoring im Hinterkopf behalten)

LaTino
09.01.2018 14:33 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Reggi
myCSharp.de-Mitglied

Dabei seit: 26.10.2016
Beiträge: 25

Themenstarter Thema begonnen von Reggi

Reggi ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Danke für die Infos.
Das wird sicher helfen. ;)
09.01.2018 15:01 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als ein Jahr.
Der letzte Beitrag ist älter als ein Jahr.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 19.08.2019 16:17