Empty string vs null

mark mark at qtrac.eu
Tue Feb 4 07:33:42 UTC 2020


I have just discovered that D seems to treat empty and null 
strings as the same thing:

// test.d
import std.stdio;
import std.string;
void main()
{
     string x = null;
     writeln("x     = \"", x, "\"");
     writeln("null  = ", x == null);
     writeln("\"\"    = ", x == "");
     writeln("empty = ", x.empty);
     x = "";
     writeln("\nx     = \"", x, "\"");
     writeln("null  = ", x == null);
     writeln("\"\"    = ", x == "");
     writeln("empty = ", x.empty);
     x = "x";
     writeln("\nx     = \"", x, "\"");
     writeln("null  = ", x == null);
     writeln("\"\"    = ", x == "");
     writeln("empty = ", x.empty);
}

Output:

x     = ""
null  = true
""    = true
empty = true

x     = ""
null  = true
""    = true
empty = true

x     = "x"
null  = false
""    = false
empty = false

1. Why is this?
2. Should I prefer null or ""? I was hoping to return null to 
indicate "no string that match the criteria", and "some string" 
otherwise.


More information about the Digitalmars-d-learn mailing list