返回$“({x},{y})”;在C#中,您能解释一下$在这里做什么吗?

时间:2019-01-05 05:35:59

标签: c#

这是代码

class Coords {

 public int x, y;

 public Coords() {
  x = 0;
  y = 0;
 }

 public override string ToString() {
  return $ "({x},{y})";
  }
}

您能解释一下$在做什么吗? 另外,我尝试运行它,但是显示了编译错误。

5 个答案:

答案 0 :(得分:1)

第一个问题。

  

您能解释一下$在这里做什么吗?

回答:

  

$特殊字符将字符串文字标识为插值字符串。插值字符串是可能包含插值表达式的字符串文字。将插值字符串解析为结果字符串时,带有插值表达式的项目将由表达式结果的字符串表示形式替换。 C#6和更高版本的语言提供了此功能。

您可以了解有关插值here

的更多信息

第二个问题。

  

我尝试运行它,但是显示了编译错误。

回答:

从此处删除空间

1.000000

它变成

return $ "({x},{y})"
        ^

如果您使用的是低于6的c#版本,则这与插值相同。

return $"({x},{y})";

答案 1 :(得分:0)

即字符串内插

public override string ToString()
{
    return $"({x},{y})";
}

这是相同的

public override string ToString()
{
    return "(" + x + "," + y + ")";
}

答案 2 :(得分:0)

这是一个字符串插值运算符。 $ - string interpolation

它允许您在字符串块内插入C#表达式。 代码的问题似乎是$运算符和您的字符串之间不必要的空格。

答案 3 :(得分:0)

您的信息在C#5或更低版本中不可用

答案 4 :(得分:0)

$是String.Format的简写,并且与字符串插值一起使用,这是C#6的新功能。See here

您的情况与

相同
  

string.Format(“({{0},{1})”,x,y);

但是$和“之间不能有空格。因此您应该使用

  

$“({x},{y})”($后没有空格)