C#2.0新增功能05 迭代器】的更多相关文章

连载目录    [已更新最新开发文章,点击查看详细] 迭代器可用于逐步迭代集合,例如列表和数组. 迭代器方法或 get 访问器可对集合执行自定义迭代. 迭代器方法使用 yield return 语句返回元素,每次返回一个. 到达 yield return 语句时,会记住当前在代码中的位置. 下次调用迭代器函数时,将从该位置重新开始执行. 通过 foreach 语句或 LINQ 查询从客户端代码中使用迭代器. 在以下示例中,foreach 循环的首次迭代导致 SomeNumbers 迭代器方法继续…
连载目录    [已更新最新开发文章,点击查看详细]    分部类或结构可以包含分部方法. 类的一个部分包含方法的签名. 可以在同一部分或另一个部分中定义可选实现. 如果未提供该实现,则会在编译时删除方法以及对方法的所有调用. 分部方法使类的某个部分的实施者能够定义方法(类似于事件). 类的另一部分的实施者可以决定是否实现该方法. 如果未实现该方法,编译器会删除方法签名以及对该方法的所有调用. 调用该方法(包括调用中的任何参数计算结果)在运行时没有任何影响. 因此,分部类中的任何代码都可以随意地…
连载目录    [已更新最新开发文章,点击查看详细] 分部类型 拆分一个类.一个结构.一个接口或一个方法的定义到两个或更多的文件中, 每个源文件包含类型或方法定义的一部分,编译应用程序时将把所有部分组合起来.   分部类 在以下几种情况下需要拆分类定义: 处理大型项目时,使一个类分布于多个独立文件中可以让多位程序员同时对该类进行处理. 当使用自动生成的源文件时,你可以添加代码而不需要重新创建源文件. Visual Studio 在创建Windows 窗体.Web 服务包装器代码等时会使用这种方法…
C#基础拾遗系列之二:使用ILSpy探索C#7.0新增功能点   第一部分: C#是一种通用的,类型安全的,面向对象的编程语言.有如下特点: (1)面向对象:c# 是面向对象的范例的一个丰富实现, 它包括封装.继承和多态性.C#面向对象的行为包括: 统一的类型系统 类与接口 属性.方法.事件 (2)类型安全:C#还允许通过dynamic关键字动态指定类型. 但是,C#仍然是一个主要的静态类型语言.之所以是一种强类型的语言,是因为它的类型规则是非常严格的,例如,不能够使用一个float类型的参数去…
连载目录    [已更新最新开发文章,点击查看详细] 在 C# 中,协变和逆变能够实现数组类型.委托类型和泛型类型参数的隐式引用转换. 协变保留分配兼容性,逆变则与之相反. 以下代码演示分配兼容性.协变和逆变之间的差异. // 分配兼容性. string str = "test"; // 将派生类型更高的对象分配给派生类型更低的对象 object obj = str; IEnumerable<string> strings = new List<string>(…
第一部分: C#是一种通用的,类型安全的,面向对象的编程语言.有如下特点: (1)面向对象:c# 是面向对象的范例的一个丰富实现, 它包括封装.继承和多态性.C#面向对象的行为包括: 统一的类型系统 类与接口 属性.方法.事件 (2)类型安全:C#还允许通过dynamic关键字动态指定类型. 但是,C#仍然是一个主要的静态类型语言.之所以是一种强类型的语言,是因为它的类型规则是非常严格的,例如,不能够使用一个float类型的参数去调用一个解释int 类型的函数,除非显式的把float转换为int…
原文地址:  https://www.cnblogs.com/runningsmallguo/p/8972678.html 第二部分:C#7.0新增的功能 (1)数字字面量的提升: C#7中的数字文字可以包含下划线以提高可读性,这些被称为数字分隔符,并被编译器忽略. 代码如下: 运行结果: 注意:二进制文字可以用0b前缀指定. 所以见到这种写法你不要惊讶,只是为了提高可读性. (2)Out variables and discards(接收out变量和丢弃out变量) 代码: 以前我们的写法:…
前言 在<C# 8.0 中使用 Index 和 Range>这篇中有人提出^0是什么意思?处于好奇就去试了,结果抛出异常.查看官方文档说^0索引与 sequence[sequence.Length] 相同,表达式 sequence[^0] 不会引发异常,就像 sequence[sequence.Length] 一样.但是在实际使用[^0]的时候抛出IndexOutOfRangeException的异常,很疑惑究竟是什么原因? 先说一下 C# 8.0 新增的两个新类型和两个新运算符,允许构造Sy…
连载目录    [已更新最新开发文章,点击查看详细] 语言集成查询 (LINQ) 不只是检索数据. 它也是用于转换数据的强大工具. 通过使用 LINQ查询,可以使用源序列作为输入,并通过多种方式对其进行修改,以创建新的输出序列.通过排序和分组,你可以修改序列本身,而无需修改这些元素本身. 但也许 LINQ 查询最强大的功能是创建新类型. 这可以在 select 子句中完成. 例如,可以执行下列任务: 将多个输入序列合并为具有新类型的单个输出序列. 创建其元素由源序列中每个元素的一个或多个属性组成…
连载目录    [已更新最新开发文章,点击查看详细] 表达式树中的每个节点将是派生自 Expression 的类的对象. 该设计使得访问表达式树中的所有节点成为相对直接的递归操作. 常规策略是从根节点开始并确定它是哪种节点. 如果节点类型具有子级,则以递归方式访问该子级. 在每个子节点中,重复在根节点处使用的步骤:确定类型,且如果该类型具有子级,则访问每个子级. 检查不具有子级的表达式 让我们首先访问一个非常简单的表达式树中的每个节点. 下面是创建常数表达式然后检查其属性的代码: , typeo…
连载目录    [已更新最新开发文章,点击查看详细] C# 7.0 向 C# 语言添加了许多新功能 01 out 变量 支持 out 参数的现有语法已在此版本中得到改进. 现在可以在方法调用的参数列表中声明 out 变量,而不是编写单独的声明语句: if (int.TryParse(input, out int result)) Console.WriteLine(result); else Console.WriteLine("Could not parse input"); 为清晰…
Android 7.0 Nougat 为用户和开发者引入多种新功能.本文重点介绍面向开发者的新功能. 请务必查阅 Android 7.0 行为变更以了解平台变更可能影响您的应用的领域. 要详细了解 Android 7.0 的消费者功能,请访问 www.android.com. 多窗口支持 在 Android 7.0 中,我们为该平台引入了一个新的而且非常需要的多任务处理功能 — 多窗口支持. 现在,用户可以一次在屏幕上打开两个应用. 在运行 Android 7.0 的手机和平板电脑上,用户可以并…
连载目录    [已更新最新开发文章,点击查看详细] C#8.0提供了许多增强功能 01 Readonly 成员 可将 readonly 修饰符应用于结构的任何成员. 它指示该成员不会修改状态. 这比将 readonly 修饰符应用于 struct 声明更精细. 请考虑以下可变结构: public struct Point { public double X { get; set; } public double Y { get; set; } public double Distance =>…
连载目录    [已更新最新开发文章,点击查看详细] C# 6.0 版本包含许多可提高开发人员工作效率的功能. 这些功能的总体效果是让你编写的代码更简洁.更具可读性. 该语法不像许多常见做法那样繁琐. 可以更轻松地看出设计意图. 好好了解这些功能可以帮助你提高生产力,编写更具可读性的代码. 你可以更专注于功能,而不是语言的构造. 本文的其余部分是对每个功能的概述,并提供用于探索每个功能的链接. 还可以在教程部分的 C# 6 交互式探索中探索这些功能. 01 只读自动属性 只读自动属性提供了更简洁…
Xcode是用于为Apple TV,Apple Watch,iPad,iPhone和Mac创建应用程序的完整开发人员工具集.Xcode开发环境采用tvOS SDK,watchOS SDK,iOS SDK和macOS SDK的形式捆绑Instruments分析工具,Simulator和OS框架. Xcode 9的亮点 Xcode 9包括整体质量改进以及广泛的新功能. 全新编辑.快速,基于结构的编辑器,可让您智能地突出显示和浏览代码.包括伟大的Markdown支持. 重构.重构内置于编辑体验之中,并…
C# 6.0 版本包含许多可提高开发人员工作效率的功能. 此版本中的功能包括: 只读自动属性: 可以创建只能在构造函数中设置的只读自动属性. 自动属性初始值设定项: 可以编写初始化表达式来设置自动属性的初始值. Expression-bodied 函数成员: 可以使用 lambda 表达式创建单行方法. using static: 可以将单个类的所有方法导入当前命名空间. Null - 条件运算符: 可以简洁.安全地访问对象的成员,同时仍能使用 null 条件运算符检查 null. 字符串内插:…
连载目录    [已更新最新开发文章,点击查看详细] C# 4 介绍命名实参和可选实参. 通过命名实参,你可以为特定形参指定实参,方法是将实参与该形参的名称关联,而不是与形参在形参列表中的位置关联. 通过可选参数,你可以为某些形参省略实参. 这两种技术都可与方法.索引器.构造函数和委托一起使用. 使用命名参数和可选参数时,将按实参出现在实参列表(而不是形参列表)中的顺序计算这些实参. 命名形参和可选形参一起使用时,你可以只为可选形参列表中的少数形参提供实参. 此功能极大地方便了对 COM 接口(…
连载目录    [已更新最新开发文章,点击查看详细] 从 Visual C# 3.0 开始,在方法范围内声明的变量可以具有隐式“类型”var. 隐式类型本地变量为强类型,就像用户已经自行声明该类型,但编译器决定类型一样. i 的以下两个声明在功能上是等效的: ; // 隐式类型 ; // 显式类型 下面的示例演示两个查询表达式. 在第一个表达式中,var 的使用是允许的,但不是必需的,因为查询结果的类型可以明确表述为 IEnumerable<string>. 不过,在第二个表达式中,var 允…
连载目录    [已更新最新开发文章,点击查看详细] 扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用. 对于用 C#.F# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法没有明显区别. 实现和调用自定义扩展方法 介绍如何为任意 .NET 类型实现自定义扩展方法. 客户端代码可以通过以下方法使用扩展方法,添加包含这些扩展方法的 DLL…
连载目录    [已更新最新开发文章,点击查看详细] 本篇介绍 LINQ 查询表达式和一些在查询中执行的典型操作. 获取数据源 在 LINQ 查询中,第一步是指定数据源. 和大多数编程语言相同,在使用 C# 时也必须先声明变量,然后才能使用它. 在 LINQ 查询中,先使用 from 子句引入数据源 (customers) 和范围变量 (cust) . // 从 IEnumerable<Customer> 中查询所有的客户信息 var queryAllCustomers = from cust…
连载目录    [已更新最新开发文章,点击查看详细] 标准查询运算符 是组成 LINQ 模式的方法. 这些方法中的大多数都作用于序列:其中序列指其类型实现 IEnumerable<T> 接口或 IQueryable<T> 接口的对象. 标准查询运算符提供包括筛选.投影.聚合.排序等在内的查询功能. 共有两组 LINQ 标准查询运算符,一组作用于类型 IEnumerable<T> 的对象,另一组作用于类型 IQueryable<T> 的对象. 构成每个集合的方…
连载目录    [已更新最新开发文章,点击查看详细] 本篇主要介绍标准查询运算符的常用运算功能. 01 对数据排序 排序操作基于一个或多个属性对序列的元素进行排序. 第一个排序条件对元素执行主要排序. 通过指定第二个排序条件,您可以对每个主要排序组内的元素进行排序. 下图展示了对一系列字符执行按字母顺序排序操作的结果. 下节列出了对数据进行排序的标准查询运算符方法. 方法 方法名 说明 C# 查询表达式语法 详细信息 OrderBy 按升序对值排序. orderby Enumerable.Ord…
连载目录    [已更新最新开发文章,点击查看详细] C# 语言和公共语言运行时 (CLR) 的 2.0 版本中添加了泛型. 泛型将类型参数的概念引入 .NET Framework,这样就可以设计具有以下特征的类和方法:在客户端代码声明并初始化这些类和方法之前,这些类和方法会延迟指定一个或多个类型. 泛型定义 泛型是为所存储或使用的一个或多个类型具有占位符(类型形参)的类.结构.接口和方法. 泛型集合类可以将类型形参用作其存储的对象类型的占位符:类型形参呈现为其字段的类型和其方法的参数类型. 泛…
连载目录    [已更新最新开发文章,点击查看详细] 在 2.0 之前的 C# 版本中,声明委托的唯一方式是使用命名方法. C# 2.0 引入匿名方法,在 C# 3.0 及更高版本中,Lambda 表达式取代匿名方法作为编写内联代码的首选方式. 但是,本主题中有关匿名方法的信息也适用于 Lambda 表达式. 在有一种情况下,匿名方法提供 Lambda 表达式中没有的功能. 使用匿名方法可省略参数列表. 这意味着匿名方法可转换为具有多种签名的委托. Lambda 表达式无法实现这一点. 有关 L…
Redis 6.0 ACL 期待已久的ACL终于来了,大家知道在redis集群中只有一个db,在多项目操作时可以通过key前缀来区分,但是还是能获取其它key,这样就带来了安全风险. Access Control Lists ACL 在之前 登录可以AUTH pwd 有了ACL后AUTH user pwd ACL LIST 我们可以使用 ACL LIST 命令来检查当前活动的 ACL > ACL LIST 1) "user default on nopass ~* +@all"…
C# 7.0更新时间为2019.2左右 C# 7.0 ~ 7.3 分别需要VS2017 与 .NET Core 1.0. .NET Core 2.0 SDK..NET Core 2.1 SDK,需要在2017下载器中,依照步骤添加:已安装——>修改——>安装详细信息——>.NET桌面开发——>.NET Core X开发工具(打钩)——>修改 一. out 变量 "; int result; int.TryParse(str, out result); result…
连载目录    [已更新最新开发文章,点击查看详细] 如果需要 I/O 绑定(例如从网络请求数据或访问数据库),则需要利用异步编程. 还可以使用 CPU 绑定代码(例如执行成本高昂的计算),对编写异步代码而言,这是一个不错的方案.C# 拥有语言级别的异步编程模型,它使你能轻松编写异步代码,而无需应付回叫或符合支持异步的库. 它遵循基于任务的异步模式 (TAP). 异步模型的基本概述 异步编程的核心是 Task 和 Task<T> 对象,这两个对象对异步操作建模. 它们受关键字 async 和 …
连载目录    [已更新最新开发文章,点击查看详细] C# 4 引入了一个新类型 dynamic. 该类型是一种静态类型,但类型为 dynamic 的对象会跳过静态类型检查. 大多数情况下,该对象就像具有类型 object 一样. 在编译时,将假定类型化为 dynamic 的元素支持任何操作. 因此,不必考虑对象是从 COM API.从动态语言(例如 IronPython).从 HTML 文档对象模型 (DOM).从反射还是从程序中的其他位置获取自己的值. 但是,如果代码无效,则在运行时会捕获到…
连载目录    [已更新最新开发文章,点击查看详细] 协变和逆变都是术语,前者指能够使用比原始指定的派生类型的派生程度更大(更具体的)的类型,后者指能够使用比原始指定的派生类型的派生程度更小(不太具体的)的类型.泛型类型参数支持协变和逆变,可在分配和使用泛型类型方面提供更大的灵活性. 在引用类型系统时,协变.逆变和不变性具有如下定义. 这些示例假定一个名为 Base 的基类和一个名为 Derived的派生类. Covariance 使你能够使用比原始指定的类型派生程度更大的类型. 你可以向 IE…
连载目录    [已更新最新开发文章,点击查看详细] 在 C# 3.0 及更高版本,当属性访问器中不需要任何其他逻辑时,自动实现的属性会使属性声明更加简洁. 它们还允许客户端代码创建对象. 当你声明以下示例中所示的属性时,编译器将创建仅可以通过该属性的 get 和 set 访问器访问的专用.匿名支持字段. 下列示例演示一个简单的类,它具有某些自动实现的属性: // 该类是可变的.它的数据可以从类外部修改 class Customer { // 用于普通get和set的自动实现属性 public…