原文:C# 9.0新特性详解系列之二:扩展方法GetEnumerator支持foreach循环

.介绍 我们知道,我们要使一个类型支持foreach循环,就需要这个类型满足下面条件之一: 该类型实例如果实现了下列接口中的其中之一: System.Collections.IEnumerable System.Collections.Generic.IEnumerable lt T gt System.Collections.Generic.IAsyncEnumerable lt T gt 该 ...

2020-11-22 14:16 0 691 推荐指数:

查看详情

C# 9.0特性

CandidateFeaturesForCSharp9 看到标题,是不是认为我把标题写错了?是的,C# 8.0还未正式发布,在官网它的最新版本还是Preview 5,通往C#9的漫长道路却已经开始.前写天收到了活跃在C#一线的BASSAM ALUGILI给我分享C# 9.0特性,我在他文章 ...

Tue Jun 11 05:28:00 CST 2019 48 11631
C# 9.0特性详解系列之三:模块初始化器

1 背景动机 关于模块或者程序集初始化工作一直是C#的一个痛点,微软内部外部都有大量的报告反应很多客户一直被这个问题困扰,这还不算没有统计上的客户。那么解决这个问题,还有基于什么样的考虑呢? 在库加载的时候,能以最小的开销、无需用户显式调用任何接口,使客户做一些期望的和一次性的初始化 ...

Mon Nov 30 06:44:00 CST 2020 0 988
C# 9.0特性详解系列之五:记录(record)和with表达式

1 背景与动机 传统面向对象编程的核心思想是一个对象有着唯一标识,表现为对象引用,封装着随时可变的属性状态,如果你改变了一个属性的状态,这个对象还是原来那个对象,就是对象引用没有因为状态的改变而改变,也就是说该对象可以有很多种状态。C#从最初开始也是一直这样设计和工作的。但是一些 ...

Thu Dec 10 17:03:00 CST 2020 5 4208
C# 9.0特性详解系列之一:只初始化设置器(init only setter)

1、背景与动机 自C#1.0版本以来,我们要定义一个不可变数据类型的基本做法就是:先声明字段为readonly,再声明只包含get访问器的属性。例子如下: 这种方式虽然很有效,但是它是以添加大量代码为代价的,并且类型越大,属性就越多,工作量就大,也就意味着更低的生产效率。 为了节省工作量 ...

Sat Nov 21 00:06:00 CST 2020 0 932
C# 9.0 特性简析

  C# 9.0已经正式发布了,vs2019更新到16.8.1版本后就能使用。这里就大概讲述其中几个特性。(其它特性看了也不知道该怎样运用=_=) 1.属性的init   当需要给对象的属性进行初始化赋值,而我们又只需要对该属性赋值一次,后面就不允许修改该属性。我们可以直接在属性 ...

Fri Nov 27 21:54:00 CST 2020 0 593
C# 9 特性 —— 增强的 foreach

C# 9 特性 —— 增强的 foreach Intro 在 C# 9 中增强了 foreach 的使用,使得一切对象都有 foreach 的可能 我们来看一段代码,这里我们试图遍历一个 int 类型的值 思考一下,我们可以怎么做使得上面的代码编译通过呢? 迭代器模式 迭代器模式 ...

Tue Dec 29 07:41:00 CST 2020 22 4192
C#9.0特性详解系列之六:增强的模式匹配

C#7.0以来,模式匹配就作为C#的一项重要的特性在不断地演化,这个借鉴于其小弟F#的函数式编程的概念,使得C#的本领越来越多,C#9.0就对模式匹配这一功能做了进一步的增强。 为了更为深入和全面的了解模式匹配,在介绍C#9.0对模式匹配增强部分之前,我对模式匹配整体做一个回顾 ...

Mon Dec 14 15:29:00 CST 2020 3 1178
C#9.0特性详解系列之四:顶级程序语句(Top-Level Programs)

1 背景与动机 通常,如果只想用C#在控制台上打印一行“Hello World!”,这可不是Console.WriteLine("Hello World!");一条语句就可以搞定的,还涉及到其他必要基础代码(如定义类和入口函数Main),例如下面: 就打印一句“Hello World ...

Mon Dec 07 06:03:00 CST 2020 0 1287
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM