c#-6.0相关内容

=> 是什么?属性签名中的 C# 赋值

我遇到了一些代码 public int MaxHealth =>内存[地址].IsValid ?内存[地址].Read(Offs.Life.MaxHp):0; 现在我对 Lambda 表达式有些熟悉了.我只是没有看到它这样使用它. 上面的语句和 有什么区别 public int MaxHealth = x ?y:z; 解决方案 你看到的是一个expression-bodied 成 ..
发布时间:2022-01-30 10:17:22 C#/.NET

带有泛型的名称

我正在用泛型试验 nameof.我没有得到我期望的结果.我不确定这是否是规范的一部分. 类 MainClass{公共静态无效主要(字符串[] args){Console.WriteLine ($"Hello { nameof(FooBar)! }");}}类FooBar{ } 我得到的输出是 你好 FooBar! 我希望了解有关类型参数的一些详细信息. 我尝试了一种方法 ..
发布时间:2022-01-23 14:42:56 C#/.NET

使用 resharper 建议的对象初始化程序的 NullReferenceException

我对对象初始化器语法有一个奇怪的问题. 这是我的示例类: 公共类 Foo{公共 Bah BahProp { 获取;放;}}公共课呸{公共 int ID { 获取;放;}} 考虑以下三种初始化对象的方法: 旧的,冗长但明确的方式,正常工作: var foo1 = new Foo();foo1.BahProp = new Bah();foo1.BahProp.Id = 1;//正确初 ..
发布时间:2022-01-19 00:06:24 C#/.NET

操作员 '?'不能应用于“T"类型的操作数

试图使 Feature 泛型然后突然编译器说 运算符'?'不能应用于“T"类型的操作数 这里是代码 公共抽象类Feature;{公共 T 值{获取 { 返回 GetValue?.Invoke();}//这里是错误设置 { SetValue?.Invoke(value);}}公共函数获取值 { 获取;放;}公共行动设置值 { 获取;放;}} 可以改用这段代码 获取{if ..
发布时间:2022-01-18 12:17:07 C#/.NET

在 Roslyn 中委托缓存行为更改

给定以下代码: 公共类 C{公共无效 M(){变量 x = 5;行动动作 = y =>Console.WriteLine(y);}} 使用 VS2013、.NET 4.5.查看反编译代码时,我们可以看到编译器在调用站点缓存委托: 公共类 C{[编译器生成]私有静态动作CS$9__CachedAnonymousMethodDelegate1;公共无效 M(){if (C ..
发布时间:2022-01-17 00:05:16 C#/.NET

使用 C# 6.0 功能运行 TFS 构建

我最近才开始在我的项目中使用 C# 6.0 的 nameof() 运算符.现在(签入时,呃...)我(或者更好的是:构建代理)拒绝构建项目(在本地编译得很好),因为它找不到 nameof()表达. 我开始在构建控制器以及 TFS 服务器本身上安装 VS 2015,但无济于事.如何让我的 TFS 2013 Update 5 构建具有 C# 6.0 功能的项目? 我已经考虑过编辑 Buil ..
发布时间:2022-01-08 15:12:21 C#/.NET

如何将 msbuild 升级到 C# 6?

我想在我的项目中使用 C# 6(空传播,其他功能). 我已经在我的 PC 上安装了 VS 2015,它运行良好,可以构建类似的测试代码 var user = new SingleUserModel();//所有模型字段为空var test = user.User?.Avatar?["blah"]; 但是当我将我的项目推送到 repo 并且 CI 开始构建它时,由于 ? 不受支持,构建失败 ..
发布时间:2022-01-08 14:56:24 C#/.NET

C# Null 传播运算符/条件访问表达式 &如果块

c#-6.0 看起来非常方便.但我很好奇它是否有助于解决检查子成员是否为空然后在 if 块内对所述子成员调用布尔方法的问题: 公共类容器{IEnumerable对象 {get;set;}}公共容器 BuildContainer(){var c = new Container();if (/* 一些随机条件 */)c.Objects = new List{1,2,4};}公共无效测试(){var ..
发布时间:2022-01-06 22:42:29 C#/.NET

为什么 C# 6.0 不允许在使用 Null 传播运算符时设置非 null 可为空结构的属性?

假设我们有以下代码: struct 文章{公共字符串 Prop1 { 获取;放;}}文章?艺术 = 新文章();艺术?.Prop1 = "嗨";//编译错误 编译错误是 CS0131 赋值的左侧必须是变量、属性或索引器. 实际上 art?.Prop1 是一个属性,应该被视为有效的赋值! 我不认为赋值有任何问题使此代码无效. 为什么 C# 6.0 不允许设置非空可空结构的属性 ..
发布时间:2021-12-31 22:27:39 C#/.NET

为什么我不能在 lambda 表达式中使用空传播运算符?

我经常在我的代码中使用空值传播运算符,因为它使我的代码更具可读性,特别是在长查询中,我不必对每个使用的类进行空值检查. 下面的代码抛出一个编译错误,我们不能在 lambda 中使用空传播运算符. var cnt = human.AsQueryable().Count(a => a.House?[0].Price == 5000); 错误: 错误 CS8072 表达式树 lambda ..
发布时间:2021-12-31 22:21:49 C#/.NET

如何将 C# 6.0 添加到 Visual Studio 2013?

有什么办法可以将 C# 6.0 添加到 Visual Studio 2013 中?如果我不能,那是为什么? 解决方案 目前您可以为 VS2013 做的最好的事情是下载 4 月最终用户预览,现在已经过时了. VS2013 编译器(按原样)不“理解"C#-6 功能.大多数(如果不是全部)C# 新功能都是编译器解释并为其发出不同代码的语法糖.为了让 VS2013 支持它,它必须升级编译器以 ..
发布时间:2021-12-31 13:51:43 C#/.NET

Visual Studio 2015 CTP 中没有 C# 6.0?

我刚刚在 Azure 上创建了一个新的 VM(使用库中 Azure 团队提供的图像)和 即将推出的 Visual Studio 2014 的 CTP 版本 昨天在网上出现以测试它,特别是为了使用新的 C# 6.0 功能. 但是,它不提供开箱即用的 C# 6.0 支持,因为没有任何语言扩展(主构造函数、属性初始值设定项、安全导航操作符)在那里工作. MSDN 上的一篇博客文章 建议将以下 ..
发布时间:2021-12-30 17:57:54 C#/.NET

在哪里可以找到 C# 语言规范 6.0?

我知道在哪里可以找到C# 5 语言规范 但我在任何地方都找不到 C# 6 语言规范. C# 6 语言规范在哪里? 解决方案 在撰写本文时(2016 年 5 月),Microsoft 尚未完成 C#6 规范的更新.与此同时,我在此处发布了微软最新的 C#6 规范草案:https://github.com/ljw1004/csharpspec/blob/gh-pages/README.m ..
发布时间:2021-12-30 17:49:48 C#/.NET

从 Visual Studio 2015 中的代码覆盖率中排除自动属性

我刚刚将一堆项目升级到了 VS2015/C#6. 现在 MSTest 的代码覆盖率分析报告说单元测试未涵盖某些自动属性.在 Visual Studio 2013 中并非如此,我怀疑这可能与 C#6 中的新自动属性功能有关. 处理由此产生的所有误报反而违背了代码覆盖率工具的目的,因为它实际上无法识别缺乏测试覆盖率的实际代码.我们不想为我们所有的 DTO 编写单元测试,而且我真的不想在整个 ..
发布时间:2021-12-30 17:48:15 C#/.NET

如何在 Visual Studio 2015 中禁用 C# 6 支持?

背景 我们有一个项目,我们正在 VS 2015 中开发并启用 C#6,有时需要由使用 VS 2013 而不使用 C#6 的开发人员打开. 我们无意在这个特定的解决方案中使用 C# 6(只要我愿意). 问题 Visual Studio 和 ReSharper 建议使用有用的 C# 6 语言结构,这些结构使解决方案在没有 C#6 支持的早期版本的 Visual Studio 中 ..
发布时间:2021-12-30 17:45:16 C#/.NET