====== Strings and their prefixes ======
A string in X# is delimited by the double quotation mark:
cString := "this is a string"
This is valid for the VO, Vulcan and Code dialects. In the VO dialect a string can also be delimited by the single quotation mark:
cString := 'this is a string'
This is to make X# compatible to VO code.
If you need to use special characters or double quotation mark in your string, the enhanced string does what you need:
cString := e"this is a \"string\"."
and of course you can also embed other control characters in your string:
cString := e"this is a multiline\nstring with another\nline"
But you can do even more with interpolated strings:
local cMyVar := "Hi" as string
cString := i"{cMyVar} guys"
Of course you can use both at the same time:
cString := ei"this is a \"string\". that references {cVariableName}"
As variable, not only a string variable can be used, but every type of object, and under the houd the '':ToString()'' method is called:
local oPerson as Person
cString := i"This is {oPerson}"
And if you wish, you can also use formatting expressions:
local nValue as decimal
nValue := 123.45m
cString := i"nValue: {nValue:######.0000}" // nValue: 123,4500
cString := i"nValue: {nValue:F6}" // nValue: 123,450000
In this case (as in the use with ToString()), if you need to embed the parentheses ''{'' and ''}'' in your string, they need to be doubled as in this sample:
cConnection := i"Driver={{Microsoft access Driver (*.mdb)}};Dbq={cDatabaseFile};Uid=Admin;Pwd=;"
And only in the VO dialect, you need to prefix a char with the ''c'' prefix:
cChar := c'a'
Please note that there is a major difference between C# and X#: in C# all strings are enhanced, and to make them normal, you must prefix them with the ''@'' character.
In X# all strings are normal, and to be enhanced, they need the ''e'' prefix.