重磅出击,C 8.0 正式发布,微软宣布将C 8.0 作为NET Core 3.0版本的其中一部分正式启用,Visual Studio 2019 支持所有新功能。你需要知道的重要功能,可空的引用类型、异步流、范围和索引、接口成员的默认实现、递归模式、Switch表达式等等……
C 8.0 adds the following features and enhancements to the C language:
• Readonly members
• Default interface methods
• Pattern matching enhancements:
▪ Switch expressions
▪ Property patterns
▪ Tuple patterns
▪ Positional patterns
• Using declarations
• Static local functions
• Disposable ref structs
• Nullable reference types
• Asynchronous streams
……
Nullable reference types
C 8.0新版本最强功能可为空的引用类型。Inside a nullable annotation context, any variable of a reference type is considered to be a nonnullable reference type. If you want to indicate that a variable may be null, you must append the type name with the ? to declare the variable as a nullable reference type. 在可为空的注释上下文中,引用类型的任何变量都被视为不可为空的引用类型。如果要指示变量可以为空,则必须将类型名附加到 ? 将变量声明为可为空的引用类型。 针对不可为空的引用类型,编译器使用流分析确保局部变量在声明时初始化为非空值。在构造期间必须初始化字段。如果变量不是通过调用任何可用的构造函数或初始值设定项设置的,编译器将生成警告。此外,不能为不可为空的引用类型分配可以为空的值。
Asynchronous streams
Starting with C 8.0, you can create and consume streams asynchronously. A method that returns an asynchronous stream has three properties: 返回异步流方法的三个属性,你需要了解下:
1. Its declared with the async modifier. 用异步修饰符声明。
2. It returns an IAsyncEnumerable
3. The method contains yield return statements to return successive elements in the asynchronous stream. 该方法包含yield return语句,用于返回异步流中的连续元素。
当枚举流的元素时,使用异步流需要在foreach关键字之前添加wait关键字。添加wait关键字需要枚举用异步修饰符声明的异步流并返回异步方法允许的类型方法。这意味着返回一个或多个任务< tresult >。它也可以是valuetask或valuetask。
方法既可以使用也可以生成异步流,这意味着它将返回iasyncenumerable。以下代码生成一个从0到19的序列,在生成每个数字之间等待100 ms:
public static async System.Collections.Generic.IAsyncEnumerable
你可以使用wait foreach语句枚举序列:
Readonly members
You can apply the readonly modifier to any member of a struct. It indicates that the member does not modify state. Its more granular than applying the readonly modifier to a struct declaration. Consider the following mutable struct: 你可以将readonly修饰符应用于结构的任何成员。它表示成员不修改状态。考虑以下可变结构:
像大多数结构一样,tostring()方法不修改状态。你可以通过向tostring()的声明中添加readonly修饰符来指示:
前面的更改会生成编译器警告,因为tostring访问distance属性,该属性未标记为只读:
warning CS8656: Call to non-readonly member Point.Distance.get from a readonly member results in an implicit copy of this
……
Whats new in C 8.0
更多功能详情见https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-8readonly-members
C是微软公司发布的一种面向对象的、运行于.NET Framework和.NET Core(完全开源,跨平台)之上的高级程序设计语言。知道么,C与Java有着惊人的相似,像诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但又有明显的不同,像它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司 .NET windows网络框架的主角。
C是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(像没有宏以及不允许多重继承)。C综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。
C是兼顾系统开发和应用开发的最佳实用语言,很有可能成为编程语言历史上第一个全能型语言。有人曾说C将不可避免地崛起,成为Windows平台上的主角……作为高级别面向对象快速成型的开发语言,它因容易学习、面向组件、结构化、高效率,以及能在多种计算机平台上编译备受推崇。
那些将C推向巅峰的强大功能:布尔条件、自动垃圾回收、标准库、组件版本、属性和事件、委托和事件管理、易于使用的泛型、索引器、条件编译、简单的多线程、LINQ和Lambda表达式、继承Windows……
声明:本文部分素材转载自互联网,如有侵权立即删除 。
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
丞旭猿论坛
暂无评论内容