c#-6.0相关内容
我正在尝试弄清楚这两条规则有什么不同? MergeSequentialChecks MergeSequentialChecksWhenPossible 文档没有提到第二个。 https://www.jetbrains.com/help/resharper/2016.1/MergeSequentialChecks.html 我不清楚WhenPossible是什么意思? 如果
..
我遇到了一些代码 public int MaxHealth =>内存[地址].IsValid ?内存[地址].Read(Offs.Life.MaxHp):0; 现在我对 Lambda 表达式有些熟悉了.我只是没有看到它这样使用它. 上面的语句和 有什么区别 public int MaxHealth = x ?y:z; 解决方案 你看到的是一个expression-bodied 成
..
我正在用泛型试验 nameof.我没有得到我期望的结果.我不确定这是否是规范的一部分. 类 MainClass{公共静态无效主要(字符串[] args){Console.WriteLine ($"Hello { nameof(FooBar)! }");}}类FooBar{ } 我得到的输出是 你好 FooBar! 我希望了解有关类型参数的一些详细信息. 我尝试了一种方法
..
我对对象初始化器语法有一个奇怪的问题. 这是我的示例类: 公共类 Foo{公共 Bah BahProp { 获取;放;}}公共课呸{公共 int ID { 获取;放;}} 考虑以下三种初始化对象的方法: 旧的,冗长但明确的方式,正常工作: var foo1 = new Foo();foo1.BahProp = new Bah();foo1.BahProp.Id = 1;//正确初
..
试图使 Feature 泛型然后突然编译器说 运算符'?'不能应用于“T"类型的操作数 这里是代码 公共抽象类Feature;{公共 T 值{获取 { 返回 GetValue?.Invoke();}//这里是错误设置 { SetValue?.Invoke(value);}}公共函数获取值 { 获取;放;}公共行动设置值 { 获取;放;}} 可以改用这段代码 获取{if
..
给定以下代码: 公共类 C{公共无效 M(){变量 x = 5;行动动作 = y =>Console.WriteLine(y);}} 使用 VS2013、.NET 4.5.查看反编译代码时,我们可以看到编译器在调用站点缓存委托: 公共类 C{[编译器生成]私有静态动作CS$9__CachedAnonymousMethodDelegate1;公共无效 M(){if (C
..
简介 考虑一下这个简单(但很糟糕)的 C# 类: 使用系统;命名空间 N{静态类 C{静态无效 M(日期时间 d){如果(d == null)Console.WriteLine(“是");别的Console.WriteLine(“否");}静态无效 L(对象 o){if (o 是 Nullable)Console.WriteLine(“是");别的Console.WriteLine(“否"
..
我最近才开始在我的项目中使用 C# 6.0 的 nameof() 运算符.现在(签入时,呃...)我(或者更好的是:构建代理)拒绝构建项目(在本地编译得很好),因为它找不到 nameof()表达. 我开始在构建控制器以及 TFS 服务器本身上安装 VS 2015,但无济于事.如何让我的 TFS 2013 Update 5 构建具有 C# 6.0 功能的项目? 我已经考虑过编辑 Buil
..
我想在我的项目中使用 C# 6(空传播,其他功能). 我已经在我的 PC 上安装了 VS 2015,它运行良好,可以构建类似的测试代码 var user = new SingleUserModel();//所有模型字段为空var test = user.User?.Avatar?["blah"]; 但是当我将我的项目推送到 repo 并且 CI 开始构建它时,由于 ? 不受支持,构建失败
..
c#-6.0 看起来非常方便.但我很好奇它是否有助于解决检查子成员是否为空然后在 if 块内对所述子成员调用布尔方法的问题: 公共类容器{IEnumerable对象 {get;set;}}公共容器 BuildContainer(){var c = new Container();if (/* 一些随机条件 */)c.Objects = new List{1,2,4};}公共无效测试(){var
..
假设我们有以下代码: struct 文章{公共字符串 Prop1 { 获取;放;}}文章?艺术 = 新文章();艺术?.Prop1 = "嗨";//编译错误 编译错误是 CS0131 赋值的左侧必须是变量、属性或索引器. 实际上 art?.Prop1 是一个属性,应该被视为有效的赋值! 我不认为赋值有任何问题使此代码无效. 为什么 C# 6.0 不允许设置非空可空结构的属性
..
我经常在我的代码中使用空值传播运算符,因为它使我的代码更具可读性,特别是在长查询中,我不必对每个使用的类进行空值检查. 下面的代码抛出一个编译错误,我们不能在 lambda 中使用空传播运算符. var cnt = human.AsQueryable().Count(a => a.House?[0].Price == 5000); 错误: 错误 CS8072 表达式树 lambda
..
有什么办法可以将 C# 6.0 添加到 Visual Studio 2013 中?如果我不能,那是为什么? 解决方案 目前您可以为 VS2013 做的最好的事情是下载 4 月最终用户预览,现在已经过时了. VS2013 编译器(按原样)不“理解"C#-6 功能.大多数(如果不是全部)C# 新功能都是编译器解释并为其发出不同代码的语法糖.为了让 VS2013 支持它,它必须升级编译器以
..
简介 考虑这个简单(和糟糕)的 C# 类: 使用系统;命名空间 N{静态类 C{静态无效 M(日期时间 d){如果(d == 空)Console.WriteLine(“是");别的Console.WriteLine(“否");}静态无效 L(对象 o){如果(o 可以为空)Console.WriteLine(“是");别的Console.WriteLine(“否");}}} M 和 L
..
我想在 Visual Studio 2015 的 C# 项目中使用 nameof 运算符,但编译器抱怨以下消息. 功能“nameof operator"在 C# 5 中不可用.请使用语言版本 6 或更高版本. 我想知道如何从 Visual Studio 2015 更改 C# 语言版本. 解决方案 试试这个.. 项目 -> 属性 -> 构建 -> 高级 -> 语言版本
..
我刚刚在 Azure 上创建了一个新的 VM(使用库中 Azure 团队提供的图像)和 即将推出的 Visual Studio 2014 的 CTP 版本 昨天在网上出现以测试它,特别是为了使用新的 C# 6.0 功能. 但是,它不提供开箱即用的 C# 6.0 支持,因为没有任何语言扩展(主构造函数、属性初始值设定项、安全导航操作符)在那里工作. MSDN 上的一篇博客文章 建议将以下
..
此代码在标记的行上抛出异常: 使用系统;使用 System.Linq.Expressions;命名空间 ConsoleApplication2{课程计划{静态无效主(字符串 [] args){Actiona = (x, y) =>Console.WriteLine(x + y);ParameterExpression p1 = Expression.Parameter(typeof(int),
..
我知道在哪里可以找到C# 5 语言规范 但我在任何地方都找不到 C# 6 语言规范. C# 6 语言规范在哪里? 解决方案 在撰写本文时(2016 年 5 月),Microsoft 尚未完成 C#6 规范的更新.与此同时,我在此处发布了微软最新的 C#6 规范草案:https://github.com/ljw1004/csharpspec/blob/gh-pages/README.m
..
我刚刚将一堆项目升级到了 VS2015/C#6. 现在 MSTest 的代码覆盖率分析报告说单元测试未涵盖某些自动属性.在 Visual Studio 2013 中并非如此,我怀疑这可能与 C#6 中的新自动属性功能有关. 处理由此产生的所有误报反而违背了代码覆盖率工具的目的,因为它实际上无法识别缺乏测试覆盖率的实际代码.我们不想为我们所有的 DTO 编写单元测试,而且我真的不想在整个
..
背景 我们有一个项目,我们正在 VS 2015 中开发并启用 C#6,有时需要由使用 VS 2013 而不使用 C#6 的开发人员打开. 我们无意在这个特定的解决方案中使用 C# 6(只要我愿意). 问题 Visual Studio 和 ReSharper 建议使用有用的 C# 6 语言结构,这些结构使解决方案在没有 C#6 支持的早期版本的 Visual Studio 中
..