return$”;({x},{y})”等;;在c#中,你能解释一下$在那里做什么吗?

return$”;({x},{y})”等;;在c#中,你能解释一下$在那里做什么吗?,c#,C#,这是密码 class Coords { public int x, y; public Coords() { x = 0; y = 0; } public override string ToString() { return $ "({x},{y})"; } } 你能解释一下$在那里做什么吗? 另外,我试图运行它,但它显示了一个编译错误。这就是字符串插值 public override string ToString() { return $"({x},

这是密码

class Coords {

 public int x, y;

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

 public override string ToString() {
  return $ "({x},{y})";
  }
}
你能解释一下
$
在那里做什么吗?
另外,我试图运行它,但它显示了一个编译错误。

这就是字符串插值

public override string ToString()
{
    return $"({x},{y})";
}
这是一样的

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

这是一个字符串插值运算符。

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

关于第一个问题

你能解释一下$在那里干什么吗

Ans:

$special字符将字符串文字标识为插值字符串。插值字符串是可能包含插值表达式的字符串文字。将插值字符串解析为结果字符串时,带有插值表达式的项将替换为表达式结果的字符串表示形式。此功能在C#6及更高版本的语言中可用

您可以阅读有关插值的更多信息

public override string ToString()
{
    return $"({x},{y})";
}
关于你的第二个问题

我试图运行它,但它显示了一个编译错误

Ans:

从这里移开空间

return $ "({x},{y})"
        ^
所以它变成了

return $"({x},{y})";
如果您使用的是低于6的c#版本,那么这将与插值相同

return string.Format("({0},{1})", x, y);

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

$是String.Format的缩写,用于字符串插值,这是C#6的一项新功能

就你而言,这和

格式(({0},{1})”,x,y)

但不允许在$和“”之间有空格。因此您应该使用

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


return$“({x},{y})”;检查语法错误-->
关于编译错误:我们需要知道您的Visual Studio版本和项目设置。当您有旧版本的Visual Studio(2013年及之前),或者您设置了旧的C语言(C#5或更低),此代码将不会编译。要更改C#版本设置,请参阅。