我刚刚在我的计算机上安装了.NET Framework 4.6,然后使用Visual Studio 2013创建了一个针对.NET Framework 4.6的ConsoleApplication。
我在Main
方法中写了以下内容:
string test = "Hello";
string format = $"{test} world!";
但是这不能编译。在Visual Studio 2015中执行相同操作 为什么呢?
答案 0 :(得分:45)
字符串插值是C#6.0功能,而不是.NET Framework 4.6之一。 VS 2013不支持C#6,但VS 2015支持。
答案 1 :(得分:28)
字符串插值确实是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条错误消息:
错误1意外字符'$'
错误2无效的表达式术语''
错误3;预期
错误4;预期
这里的前3个错误与使用字符串插值的行有关,只有最后; expected
错误才有问题。在我们返回View
之前删除有问题的行,字符串插值编译错误消失,一切都很好。