MDrivenWiki
Log in

OCLOperators Not

From MDrivenWiki

"Not" is the usual Not operator found in most languages.

But there are a few things to point out when writing expressions using True, False, nullable booleans and Not.

Avoid the risk with nullable booleans

Consider xxxx.DisableEditing = false

When you think you want to use "a boolean" with = true/false , don't - It's almost never correct.

The reason is that an nullable boolean is tri-state. False, True and Null.  If an expression is xxxx.DisableEditing that is false for BOTH False and Null.

So, almost always use "xxxx.DisableEditing" or "not xxxx.DisableEditing" (there are exceptions, but not many)

For example

self.ValidTo.notNull and
self.AddedTo.isNull and
(self.Agreement.Facilitator.DisableEditing = false)

If DisableEditing is Null, then "(self.Agreement.Facilitator.DisableEditing = false)" is actually True. (the above false/null problem)

self.ValidTo.notNull and
self.AddedToJournalSearch.isNull and
not self.Agreement.Facilitator.DisableEditing