Show/Hide Toolbars

XSharp

插值字符串是一种允许将局部变量、实例变量或其他表达式嵌入字面字符串的功能。X# 支持两种插值字符串:

 

1.        常规插值字符串: i"...."

 

其工作方式与普通 X# 字符串类似,内嵌表达式:

 

 FUNCTION Start AS VOID
    LOCAL Who AS STRING
     Who := "World"
     Console.Writeline( i"Hello {Who}")
     Console.Read()
    RETURN

2.        扩展插值字符串: ie"..." 和 ei"...."

这是插值字符串和扩展字符串的组合。在下面的示例中,\t 将被 tab 字符替换:

 

  FUNCTION Start AS VOID
    LOCAL Who AS STRING
     Who := "World"
     Console.Writeline( ie"Hello\t{Who}")
     Console.Read()
    RETURN

注意:

X# 内的插值字符串可以包含以下形式的表达式

{<interpolationExpression>[,<alignment>][::<formatString>]}

在 C# 中,formatString 的前缀是单冒号。请注意,由于在 X# 中,冒号(:)操作符是实例字段、属性和方法的默认成员访问操作符,因此并不总是可以使用该操作符来分隔表达式和格式字符串。因此,我们将该操作符改为双冒号(::)。如果使用 /allowdot+ 进行编译,也可以使用单冒号作为格式分隔符。

 

要表示字面上的“{”或“}”字符,必须在字符串中复制它们。本例中字符串内的表达式用斜体表示。

FUNCTION Start() AS VOID
  local X := 2 as INT
  local Y := 3 as INT
  var pointMessage := i"The point {{{X}, {Y}}} is {Math.Sqrt(X * X + Y * Y)::F3} from the origin"
  Console.WriteLine(pointMessage)
 // 输出结果:
 // The point {2, 3} is 3.606 from the origin

 

字符串内的表达式元素可以使用格式化符号,就像 String.Format() 符号一样。例如:

 

 FUNCTION Start AS VOID
    LOCAL i AS INT
     i := 42
     Console.Writeline( i"Hello {i:x}")   // i 用十六进制表示,所以输出 Hello 2a
     Console.Read()
    RETURN