Rash thoughts about .NET, C#, F# and Dynamics NAV.


"Every solution will only lead to new problems."

Monday, 16. October 2006


Navision das "überfleißige" Bienchen

Filed under: C#,Navision — Steffen Forkmann at 9:37 Uhr

Navision scheint auf “Lazy Evaluation” komplett zu verzichten und ganz fleißig jeden logischen Ausdruck bis zum Ende durchzurechnen.

Mit folgendem Beispiel kann man das leicht nachprüfen:

IF A AND B THEN MESSAGE('A and B'); ... PROCEDURE A@1000000001() : Boolean; BEGIN MESSAGE('A'); EXIT(FALSE); END; PROCEDURE B@1000000002() : Boolean; BEGIN MESSAGE('B'); EXIT(TRUE); END;

Wenn man diesen Code ausführt werden beide Messages (‘A’ und ‘B’) angezeigt, obwohl eigentlich nach Funktion A der Term A AND B schon als falsch ausgewertet werden kann. Wenn man selbiges Beispiel in C# aufschreibt wird übrigens nur A() ausgeführt:

if (A() && B()) MessageBox.Show("A and B"; ... bool A() { MessageBox.Show("A"); return false; } bool B() { MessageBox.Show("B"); return true; }

Ähnlich verhält es sich auch mit allen anderen logischen Ausdrücken – Navision rechnet bis ganz zum Ende alles durch.

No Comments »

No comments yet.

RSS feed for comments on this post. | TrackBack URI

Leave a comment

XHTML ( You can use these tags): <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> .