C# handles NULL quite different than PowerScript and SQL.
Same code in PowerScript and C# may have different outcome.
Welcome to a set of examples showing you how C# handles NULL different than PowerScript.
In fact so different that same code can have completely different outcome.
Example 1 : Boolean Data Types
C# by default defines the Boolean data type without NULL.
You can opt-in NULL using the nullable operator (question mark).
PowerScript | C# | C# | |
Data type | Boolean |
bool |
bool? |
Possible values | true, false, null | true, false | true, false, null |
Example 2 : Conditional Expressions
C# evaluates conditional expressions to its not-NULL Boolean type.
Conditional expressions in C# therefore often have different value than in PowerScript.
Adding null to the Boolean data type has no impact.
PowerScript Syntax | Boolean result |
vs. | C# Syntax | bool result |
bool? result |
result = (null > 42) |
null | result = (null > 42) |
false | false | |
result = (null <> 42) |
null | result = (null != 42) |
true | true | |
result = (null = null) |
null | result = (null == null) |
true | true | |
result = (null <> null) |
null | result = (null != null) |
false | false |
Example 3 : Equality in IF, DO, and WHILE statements
Check for equality in IF, DO, and WHILE statements has different behavior in C# when comparing to NULL values.
Name1 | Name2 | PowerScript | C# |
|
|
||
null | null | result = "South" | result = "NORTH" |
null | "Mick" | result = "South" | result = "South" |
Example 4 : Inequality in IF, DO, and WHILE statements
Similar differences exist when checking for inequality.
Name1 | Name2 | PowerScript | C# |
|
|
||
null | null | result = "South" | result = "South" |
null | "Mick" | result = "South" | result = "NORTH" |
Example 5 : Check for NULL
Syntax for NULL is very different in C# though easy to read and type.
Check | PowerScript | C# |
name IS NULL |
|
|
name IS NOT NULL |
|
|
Conclusion
"Mind your step!" as you cross between PowerScript + SQL on one side and C# on the other side!
NULL handling is so different in C# that same code sometimes results in completely different outcomes.
Notice in DO and WHILE loops, difference may result in endless loops!
Comments (0)