我可以在 C# 6 中将多个语句放入一个内插字符串中吗?

Can I put multiple statements in a interpolated string in C# 6?

在Ruby中,我可以将多个语句放在一个内插字符串中,例如

puts "#{a = 1; b = 2; a + b;}"

或者我可以像这样把它们放在多行中:

puts "#{a = 1;
b = 2;
a + b;}"

我可以在 C# 6 中做同样的事情吗?我试过但失败了。下面是我的 C# 代码。

Console.WriteLine($@"haha
{int a = 1;
 int b = 2;
 a+b;}
heihei");

当我尝试 运行 C# 程序时,我得到:

CS1525 Invalid expression term 'int'
CS1073 Unexpected token 'a'

希望有人能帮忙。

您的字符串插值语句中不能有完整的代码块。只能在里面做评价。

所以这可行(将变量拉到外面):

int a = 1;
int b = 2;
Console.WriteLine($@"haha
{a+b}
heihei");

还有这个(只做评价):

Console.WriteLine($@"haha
{1+2}
heihei");

Ruby 与 C# 不同,在您的情况下,您在字符串插值中编写了完整代码,因此它不起作用。

Console.WriteLine($"Name = {name}, hours = {hours:hh}")

Console.WriteLine($@"haha {1+2} heihei");

供参考:Microsoft C#