在插值字符串中编写其他 C# 代码?

Deb*_*ahK 5 c# string-interpolation c#-11.0

在 C# 11 中,我们现在可以在内插字符串中包含换行符。所以我们可以写这样的代码:

    string pageTitle = "";
    string header = $"Header: {
      pageTitle switch
      {
        "" => "No title",
        _ => pageTitle
      }}";
Run Code Online (Sandbox Code Playgroud)

除了 switch 语句之外,有没有办法在这里编写其他代码?

我尝试了一个if,它告诉我这if是一个无效的表达术语。

    string header51 = $"Header: {
      if (pageTitle5 == "")
      {
        "No title";
      }
      else
      {
        pageTitle5;
      }  
    }";
Run Code Online (Sandbox Code Playgroud)

除了 switch 之外还有其他语句可以在这里使用吗?

Hei*_*nzi 6

每个表达式都会起作用。在C#中,if不是表达式,而是语句。

然而,三元运算符产生一个表达式:

string header51 = $"Header: {
  (pageTitle5 == "" 
      ? "No title"
      : pageTitle5)
  }";
Run Code Online (Sandbox Code Playgroud)

switch在您的示例中有效,因为您不使用switch语句而是switch表达式