字符串插值不适用于 .NET Framework 4.6
String interpolation doesn't work with .NET Framework 4.6
我刚刚在我的机器上安装了 .NET Framework 4.6,然后使用 Visual Studio 2013 创建了一个针对 .NET Framework 4.6 的 ConsoleApplication。
我在Main
方法中写了以下内容:
string test = "Hello";
string format = $"{test} world!";
但这不编译。在 Visual Studio 2015 年做同样的事情。
为什么?
字符串插值是 C# 6.0 的一项功能,而不是 .NET Framework 4.6 的一项功能。 VS 2013 不支持 C# 6 但 VS 2015 支持。
字符串插值确实是 C# 6.0 的特性,但 C# 6 不限于 VS2015。
您可以通过 Microsoft.Net.Compilers
NuGet package.
以 Roslyn 编译器平台为目标来编译在 VS2013 中利用 C# 6.0 语言功能的应用程序
我的经验是,安装此包后,编译期间的错误消息可能有点误导。如果您遇到与 C# 6 无关的编译错误,您将看到这些错误消息以及与您使用的任何 C# 6 功能相关的无效语法的错误消息,尽管您现在的目标是支持它们的编译器。
例如...
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Title = "Home Page";
var example = $"{ViewBag.Title}";
ImASyntaxErrorWhatAmIWheresMySemicolonLOL
return View();
}
}
编译时会出现4条错误信息:
Error 1 Unexpected character '$'
Error 2 Invalid expression term ''
Error 3 ; expected
Error 4 ; expected
这里的前3个错误与使用字符串插值的行有关,只有最后一个; expected
错误是一个问题。在我们 return 和 View
之前删除有问题的行,字符串插值编译错误消失,一切都很好。
我刚刚在我的机器上安装了 .NET Framework 4.6,然后使用 Visual Studio 2013 创建了一个针对 .NET Framework 4.6 的 ConsoleApplication。
我在Main
方法中写了以下内容:
string test = "Hello";
string format = $"{test} world!";
但这不编译。在 Visual Studio 2015 年做同样的事情。
为什么?
字符串插值是 C# 6.0 的一项功能,而不是 .NET Framework 4.6 的一项功能。 VS 2013 不支持 C# 6 但 VS 2015 支持。
字符串插值确实是 C# 6.0 的特性,但 C# 6 不限于 VS2015。
您可以通过 Microsoft.Net.Compilers
NuGet package.
我的经验是,安装此包后,编译期间的错误消息可能有点误导。如果您遇到与 C# 6 无关的编译错误,您将看到这些错误消息以及与您使用的任何 C# 6 功能相关的无效语法的错误消息,尽管您现在的目标是支持它们的编译器。
例如...
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Title = "Home Page";
var example = $"{ViewBag.Title}";
ImASyntaxErrorWhatAmIWheresMySemicolonLOL
return View();
}
}
编译时会出现4条错误信息:
Error 1 Unexpected character '$'
Error 2 Invalid expression term ''
Error 3 ; expected
Error 4 ; expected
这里的前3个错误与使用字符串插值的行有关,只有最后一个; expected
错误是一个问题。在我们 return 和 View
之前删除有问题的行,字符串插值编译错误消失,一切都很好。