随笔分类 -  .NET:C#各版本新功能

摘要:系列目录 【已更新最新开发文章,点击查看详细】 1、C#9.0 规范建议 记录 顶级语句 模式匹配增强 仅限Init的资源库 目标类型的 new 表达式 模块初始值设定项 扩展分部方法 静态匿名函数 目标类型的条件表达式 协变返回类型 Foreach循环中的扩展GetEnumerator Lambd 阅读全文
posted @ 2020-10-23 11:38 张传宁 阅读(372) 评论(0) 推荐(1) 编辑
摘要:系列目录 【已更新最新开发文章,点击查看详细】 C# 9.0 向 C# 语言添加了以下功能和增强功能: 记录 仅限 Init 的资源库 顶级语句 模式匹配增强功能 本机大小的整数 函数指针 禁止发出 localsinit 标志 目标类型的新表达式 静态匿名函数 目标类型的条件表达式 协变返回类型 扩 阅读全文
posted @ 2020-10-23 09:32 张传宁 阅读(946) 评论(0) 推荐(0) 编辑
摘要:本系列文章主要整理并介绍 C# 各版本的新增功能与规范建议。 C# 规范建议 C# 12 发布公告:https://devblogs.microsoft.com/dotnet/announcing-csharp-12 C# 12 中的新增功能:https://learn.microsoft.com/ 阅读全文
posted @ 2019-07-23 08:57 张传宁 阅读(12345) 评论(41) 推荐(61) 编辑
摘要:系列目录 【已更新最新开发文章,点击查看详细】 从 .NET Core 3.0 上的 C# 8.0 开始,可以在声明接口成员时定义实现。 最常见的方案是安全地将成员添加到已经由无数客户端发布并使用的接口。 在本教程中,你将了解: 通过使用实现添加方法,安全地扩展接口。 创建参数化实现以提供更大的灵活 阅读全文
posted @ 2019-07-17 19:53 张传宁 阅读(2902) 评论(0) 推荐(0) 编辑
摘要:系列目录 【已更新最新开发文章,点击查看详细】 C#8.0提供了许多增强功能 01 Readonly 成员 可将 readonly 修饰符应用于结构的任何成员。 它指示该成员不会修改状态。 这比将 readonly 修饰符应用于 struct 声明更精细。 请考虑以下可变结构: public str 阅读全文
posted @ 2019-07-17 16:30 张传宁 阅读(7107) 评论(0) 推荐(2) 编辑
摘要:系列目录 【已更新最新开发文章,点击查看详细】 C# 7.3 版本有两个主要主题。 第一个主题提供使安全代码的性能与不安全代码的性能一样好的功能。 第二个主题提供对现有功能的增量改进。 此外,在此版本中添加了新的编译器选项。 以下新增功能支持使安全代码获得更好的性能的主题: 无需固定即可访问固定的字 阅读全文
posted @ 2019-07-17 15:38 张传宁 阅读(2671) 评论(0) 推荐(0) 编辑
摘要:系列目录 【已更新最新开发文章,点击查看详细】 C# 7.2 又是一个单点版本,它增添了大量有用的功能。 此版本的一项主要功能是避免不必要的复制或分配,进而更有效地处理值类型。 C# 7.2 使用语言版本选择配置元素来选择编译器语言版本。 01 安全高效的代码的增强功能 利用 7.2 中引入的语言功 阅读全文
posted @ 2019-07-17 11:58 张传宁 阅读(1549) 评论(0) 推荐(0) 编辑
摘要:系列目录 【已更新最新开发文章,点击查看详细】 C# 7.1 是 C# 语言的第一个点版本(更新版本)。 它标志着该语言发布节奏的加速。 理想情况下,可以在每个新功能准备就绪时更快推出新功能。 C# 7.1 增加了将编译器配置为匹配特定语言版本的功能。 从而可以分别制定有关升级语言版本的决策和有关升 阅读全文
posted @ 2019-07-17 11:30 张传宁 阅读(1612) 评论(0) 推荐(1) 编辑
摘要:系列目录 【已更新最新开发文章,点击查看详细】 C# 7.0 向 C# 语言添加了许多新功能 01 out 变量 支持 out 参数的现有语法已在此版本中得到改进。 现在可以在方法调用的参数列表中声明 out 变量,而不是编写单独的声明语句: if (int.TryParse(input, out 阅读全文
posted @ 2019-07-16 20:18 张传宁 阅读(1490) 评论(0) 推荐(0) 编辑
摘要:系列目录 【已更新最新开发文章,点击查看详细】 C# 6.0 版本包含许多可提高开发人员工作效率的功能。 这些功能的总体效果是让你编写的代码更简洁、更具可读性。 该语法不像许多常见做法那样繁琐。 可以更轻松地看出设计意图。 好好了解这些功能可以帮助你提高生产力,编写更具可读性的代码。 你可以更专注于 阅读全文
posted @ 2019-07-16 15:53 张传宁 阅读(1663) 评论(0) 推荐(1) 编辑
摘要:系列目录 【已更新最新开发文章,点击查看详细】 通过使用调用方信息特性,可获取有关方法的调用方的信息。 可以获取源代码的文件路径、源代码中的行号和调用方的成员名称。 此信息有助于跟踪、调试和创建诊断工具。若要获取此信息,可以使用应用于可选参数的特性,每个特性都具有默认值。 下表列出在 System. 阅读全文
posted @ 2019-07-15 23:42 张传宁 阅读(909) 评论(0) 推荐(0) 编辑
摘要:系列目录 【已更新最新开发文章,点击查看详细】 如果需要 I/O 绑定(例如从网络请求数据或访问数据库),则需要利用异步编程。 还可以使用 CPU 绑定代码(例如执行成本高昂的计算),对编写异步代码而言,这是一个不错的方案。C# 拥有语言级别的异步编程模型,它使你能轻松编写异步代码,而无需应付回叫或 阅读全文
posted @ 2019-07-15 23:30 张传宁 阅读(1035) 评论(0) 推荐(1) 编辑
摘要:系列目录 【已更新最新开发文章,点击查看详细】 从 .NET Framework 4 开始,公共语言运行时支持将 COM 类型的类型信息直接嵌入到托管程序集中,而不要求托管程序集从互操作程序集中获取 COM 类型的类型信息。 由于嵌入式类型信息仅包含托管程序集实际使用的类型和成员,因此两个托管程序集 阅读全文
posted @ 2019-07-15 19:30 张传宁 阅读(829) 评论(0) 推荐(0) 编辑
摘要:系列目录 【已更新最新开发文章,点击查看详细】 协变和逆变都是术语,前者指能够使用比原始指定的派生类型的派生程度更大(更具体的)的类型,后者指能够使用比原始指定的派生类型的派生程度更小(不太具体的)的类型。泛型类型参数支持协变和逆变,可在分配和使用泛型类型方面提供更大的灵活性。 在引用类型系统时,协 阅读全文
posted @ 2019-07-15 17:26 张传宁 阅读(730) 评论(0) 推荐(0) 编辑
摘要:系列目录 【已更新最新开发文章,点击查看详细】 C# 4 介绍命名实参和可选实参。 通过命名实参,你可以为特定形参指定实参,方法是将实参与该形参的名称关联,而不是与形参在形参列表中的位置关联。 通过可选参数,你可以为某些形参省略实参。 这两种技术都可与方法、索引器、构造函数和委托一起使用。 使用命名 阅读全文
posted @ 2019-07-15 17:16 张传宁 阅读(955) 评论(0) 推荐(0) 编辑
摘要:系列目录 【已更新最新开发文章,点击查看详细】 C# 4 引入了一个新类型 dynamic。 该类型是一种静态类型,但类型为 dynamic 的对象会跳过静态类型检查。 大多数情况下,该对象就像具有类型 object 一样。 在编译时,将假定类型化为 dynamic 的元素支持任何操作。 因此,不必 阅读全文
posted @ 2019-07-15 16:34 张传宁 阅读(1393) 评论(0) 推荐(0) 编辑
摘要:系列目录 【已更新最新开发文章,点击查看详细】 本篇将介绍如何访问表达式树中的每个节点,同时生成该表达式树的已修改副本。 以下是在两个重要方案中将使用的技巧。 第一种是了解表达式树表示的算法,以便可以将其转换到另一个环境中。 第二种是何时更改已创建的算法。 这可能是为了添加日志记录、拦截方法调用并跟 阅读全文
posted @ 2019-07-15 14:56 张传宁 阅读(492) 评论(0) 推荐(0) 编辑
摘要:系列目录 【已更新最新开发文章,点击查看详细】 到目前为止,你所看到的所有表达式树都是由 C# 编译器创建的。 你所要做的是创建一个 lambda 表达式,将其分配给一个类型为 Expression<Func<T>> 或某种相似类型的变量。 这不是创建表达式树的唯一方法。 很多情况下,可能需要在运行 阅读全文
posted @ 2019-07-15 11:58 张传宁 阅读(448) 评论(0) 推荐(0) 编辑
摘要:系列目录 【已更新最新开发文章,点击查看详细】 表达式树中的每个节点将是派生自 Expression 的类的对象。 该设计使得访问表达式树中的所有节点成为相对直接的递归操作。 常规策略是从根节点开始并确定它是哪种节点。 如果节点类型具有子级,则以递归方式访问该子级。 在每个子节点中,重复在根节点处使 阅读全文
posted @ 2019-07-15 11:38 张传宁 阅读(527) 评论(0) 推荐(0) 编辑
摘要:系列目录 【已更新最新开发文章,点击查看详细】 表达式树 是表示一些代码的数据结构。 它不是已编译且可执行的代码。 如果想要执行由表达式树表示的 .NET 代码,则必须将其转换为可执行的 IL 指令。 Lambda 表达式到函数 可以将任何 LambdaExpression 或派生自 LambdaE 阅读全文
posted @ 2019-07-14 13:28 张传宁 阅读(567) 评论(0) 推荐(0) 编辑

页脚 HTML 代码