Questions tagged «c#-6.0»

C#6.0与Roslyn(.NET编译器平台)和Visual Studio 2015一起提供。



5
C#6.0是否适用于.NET 4.0?
我创建了一个带有C#6.0好东西的示例项目-以零传播和属性初始化为例,设置目标版本.NET 4.0即可。 public class Cat { public int TailLength { get; set; } = 4; public Cat Friend { get; set; } public string Mew() { return "Mew!"; } } class Program { static void Main(string[] args) { var cat = new Cat {Friend = new Cat()}; Console.WriteLine(cat?.Friend.Mew()); Console.WriteLine(cat?.Friend?.Friend?.Mew() ?? …
275 c#  .net  c#-6.0 

16
nameof的目的是什么?
6.0版具有的新功能nameof,但我无法理解它的用途,因为它只接受变量名,并在编译时将其更改为字符串。 我认为使用<T>时它可能有一些用途,但是当我尝试使用它时nameof(T),只会打印出a T而不是使用的类型。 有什么目的吗?
263 c#  .net  c#-6.0  nameof 

6
属性签名中C#中的=>赋值是什么
我遇到了一些说的代码 public int MaxHealth => Memory[Address].IsValid ? Memory[Address].Read<int>(Offs.Life.MaxHp) : 0; 现在,我对Lambda表达式有所了解。我只是没有看到它以这种方式使用。 上面的陈述和 public int MaxHealth = x ? y:z;
229 c#  c#-6.0 


6
如何在Visual Studio 2015中禁用C#6支持?
背景 我们有一个在VS 2015中启用C#6的项目,开发人员有时需要使用不带C#6的VS 2013来打开该项目。 我们无意在此特定解决方案中使用C#6(正如我所希望的那样)。 问题 Visual Studio和ReSharper建议使用有用的C#6语言构造,这些构造会使解决方案在没有C#6支持的早期版本的Visual Studio中无法使用。 我已禁用ReSharper C#6支持,但似乎无法在整个解决方案中禁用/限制C#功能。 题 如何在解决方案中或Visual Studio 2015中将C#限制为C#5功能?

7
C#6.0功能不适用于Visual Studio 2015
我正在使用C#6.0测试Visual Studio 2015,但是语言功能无法正常工作。在MVC Web应用程序中,将编译以下代码: if (!string.IsNullOrWhiteSpace(Model.Profile?.TypeName)) { // More logic here... } 但是,当我通过Debug和IIS Express运行应用程序时,出现以下错误: CS1525:无效的表达式术语“。” 如何启用这些功能?

5
C#6中的长字符串插值线
我发现,虽然将字符串插值应用于我现有代码库的字符串Format调用确实非常好,但考虑到通常首选的列限制,字符串对于单行来说很快就会变得太长。尤其是当要插入的表达式很复杂时。使用格式字符串,您可以获得一个可以分成多行的变量列表。 var str = string.Format("some text {0} more text {1}", obj1.property, obj2.property); 有人有打破这些界限的偏爱方法吗? 我想你可以做这样的事情: var str = $"some text { obj1.property }" + " more text { obj2.property };
134 c#  c#-6.0 

6
计划中的“受私有保护”的C#访问修饰符是什么意思?
作为GitHub上Roslyn文档的一部分,有一个页面叫语言功能实施状态,其中包含计划的C#和VB语言功能。 private protected访问修饰符是我无法解决的一个功能: private protected string GetId() { … } 还有一个C#语言设计说明页面,其中介绍了许多新功能,但没有介绍这一功能。 埃里克·利珀特(Eric Lippert)在评论中说: 您的错误是将修饰符视为增加的限制。实际上,修饰符总是会减少限制。请记住,默认情况下事情是“私有的”。仅通过添加修饰符,您才能使它们的约束更少。 是什么意思private protected?我什么时候可以使用?

1
如何将逐字字符串与插值一起使用?
在C#6中,有一个新功能:内插字符串。 这些使您可以将表达式直接放入代码中,而不是依赖索引: string s = string.Format("Adding \"{0}\" and {1} to foobar.", x, this.Y()); 成为: string s = $"Adding \"{x}\" and {this.Y()} to foobar."; 但是,我们使用逐字字符串(主要是SQL语句)在多行中有很多字符串,如下所示: string s = string.Format(@"Result... Adding ""{0}"" and {1} to foobar: {2}", x, this.Y(), x.GetLog()); 将它们恢复为常规字符串似乎很麻烦: string s = "Result...\r\n" + $"Adding \"{x}\" and {this.Y()} to foobar:\r\n" …

7
如何在网站项目类型中使用C#6?
更新了现有网站项目类型Visual Studio 2015,将Framework更改为4.6。 然后,我希望文件中的代码中具有所有这些新功能。 不幸的是,我收到如下错误: 错误CS8026:C#5中没有功能“表达式绑定的属性”。请使用语言版本6或更高版本。 或例如: 错误CS8026:C#5中没有功能“插值字符串”。请使用语言版本6或更高版本。 我做了一次Google快速检查,发现一个人在ScottGu的博客文章中发表了一些评论(在页面上搜索“ 8026”)。 由于我不了解他的解决方案,并且我想使解决方案更加可见,因此我创建了此SO发布。 我的问题: 如何拥有类型为Web站点(即不是Web应用程序)的Visual Studio 2015项目来识别C#6功能?

2
如何使用C#6“使用静态”功能?
我正在看C#6 中的几个新功能,特别是 “使用静态”。 using static是一种新的using子句,可让您将类型的静态成员直接导入作用域。 (博客文章的底部) 根据我发现的一些教程,该想法如下所示, 而不是: using System; class Program { static void Main() { Console.WriteLine("Hello world!"); Console.WriteLine("Another message"); } } Console使用使用静态类的新C#6功能,可以省略重复的语句: using System.Console; // ^ `.Console` added. class Program { static void Main() { WriteLine("Hello world!"); WriteLine("Another message"); } // ^ `Console.` removed. } 但是,这似乎不适用于我。我在using声明中出现错误,说: “ using …


3
如何将msbuild升级到C#6?
我想在我的项目中使用C#6(零传播,其他功能)。 我已经在PC上安装了VS 2015,它的运行非常出色,并且可以像 var user = new SingleUserModel(); //all model fields are null var test = user.User?.Avatar?["blah"]; 但是,当我将项目推送到仓库并且CI开始构建它时,由于不受支持,构建失败?。 我也已经在CI服务器上安装了VS2015,但是看起来它没有使用它。我能做什么? CI-CruiseControl .NET使用 C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.