使用yield返回IEnumber<T>集合
yield是对一种复杂行为的简化,就是将一段代码简化为一种简单的形式。
先看一下常规的写法,下面例子中,把找出字符串阵列中,某些元素包含有某些字符的元素。
class Bi
{
public string[] str { get; set; } public IEnumerable<string> GetIncludeCharacterOfArray(string includeCharacter)
{
List<string> lst = new List<string>();
for (int i = ; i < str.Length; i++)
{
if (str[i].Contains(includeCharacter))
{
lst.Add(str[i]);
}
}
return lst;
}
}
Source Code
运行结果:

下面,我们使用yield来简化一下上面的方法:
public IEnumerable<string> GetIncludeCharacterOfArrayWithYield(string includeCharacter)
{
for (int i = ; i < str.Length; i++)
{
if (str[i].Contains(includeCharacter))
yield
return str[i];
}
}
Source Code
再次运行:

使用yield返回IEnumber<T>集合的更多相关文章
- Entity Framework 6 Recipes 2nd Edition(10-1)译->非Code Frist方式返回一个实体集合
		存储过程 存储过程一直存在于任何一种关系型数据库中,如微软的SQL Server.存储过程是包含在数据库中的一些代码,通常为数据执行一些操作,它能为数据密集型计算提高性能,也能执行一些为业务逻辑. 当 ... 
- DWR3.0 dwr 返回值(数组,集合,Map)
		首先导入项目所需要的包,如下:dwr.jar,commons-logging-1.0.4.jar,版本可以调整 1.web.xml<?xml version="1.0" en ... 
- 对比两个同类型的泛型集合并返回差异泛型集合 ——两个List<类名>的比较
		1: /// <summary> 2: /// 对比两个同类型的泛型集合并返回差异泛型集合 3: /// </summary> 4: /// <typeparam nam ... 
- python yield返回多个值
		yield可以返回多个值到setup函数中去,但是需要用括号括起来,然后下面具体的函数接受到传值就不需要每次都实例化了. 举例如下: @pytest.fixture()def setup(driver ... 
- Python连载39-生成器、next函数、yield返回值
		一.生成器 1.定义(generator):一边循环一边计算下一个元素的机制/算法 2.满三个条件 (1)每次调用都能产生出for循环需要的下一个元素 (2)如果达到最后一个后,能够爆出StopIt ... 
- Ajax之json返回结果是集合的处理
		Jquery实现ajax: $.ajax({ type //数据的提交方式:get和post url //数据的提交路径 async //是否支持 ... 
- 使用yield关键字让自定义集合实现foreach遍历
		一般来说当我们创建自定义集合的时候为了让其能支持foreach遍历,就只能让其实现IEnumerable接口(可能还要实现IEnumerator接口) 但是我们也可以通过使用yield关键字构建的迭代 ... 
- C# 使用IEnumerable,yield 返回结果,同时使用foreach时,在循环内修改变量的值无效(二)
		前言 在上篇文章中我得出结论,遍历迭代器修改迭代器中项目的值未生效,是因为使用了yield return,并且每次遍历迭代器都执行返回迭代器的方法.这篇文章是接着上篇文章,从代码实现的角度来验证出现这 ... 
- JavaScript调用wcf服务,并且处理返回的字典集合
		1.第一步创建wcf服务的方法 using System;using System.Collections.Generic;using System.Linq;using System.Runtime ... 
随机推荐
- sqlserver每行都有累加,你怎么搞,窗口函数来帮忙!!!
			在统计中我们经常会面临复杂的查询,例如累加,最近也遇到一个很好的例子,今天我们一起来看看: 有一个关于销售数据的视图,字段有:emptyid(员工编号),ordermonth( ... 
- python练习:http协议介绍
			一.HTTP协议 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写.它的发展是万维网协会(World Wide Web Consortium)和Interne ... 
- ListView实现下拉动态渲染数据
			欢迎讨论欢迎一起学习:微信jkxx123321 这是一篇关于LIstView实现动态数据渲染的文章![RN] 首先我们讲讲数据是如何来规划的 一般情况下我们有两种规划方案前提比如我们数据是100条+ ... 
- 【redis专题(4)】命令语法介绍之sorted_set
			有序集合可以模拟优先级队列的实现 增 zadd key score1 value1 score2 value2 .. redis 127.0.0.1:6379> zadd stu 18 lily ... 
- 自动化测试基础篇--Selenium Python环境搭建
			学习selenium python需要的工具: 1.浏览器 2.Python 3.Selenium 4.FireBug(Firefox) 5.chromedriver.IEDriverServer.g ... 
- .net core xss攻击防御
			XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允许恶意 ... 
- DMZ 区域
			下面对DMZ区域进行简要介绍:DMZ是网络的一个区域,介于外网与内网之间的一个特殊区域,也称隔离区.它不同于传统的防火墙设置,DMZ防火墙方案为要保护的内部网络增加了一道安全防线,通常认为是非常安全的 ... 
- 社交网络编程API之iOS系统自带分享
			社交网络编程API 社交网络编程主要使用iOS提供的Social框架,目前Social框架主要包含两个类: SLComposeViewController 提供撰写社交信息(如微博信息)的视图控制器, ... 
- VRS——备忘
			1.所有版本VRS,注释掉m_ChisauarePRN参数 2.注释掉所有的MODULE_GNSSMonitor_ID,暂时用不到.但是会造成basestation崩掉. n.RegisterStat ... 
- Alpha冲刺! Day11 - 砍柴
			Alpha冲刺! Day11 - 砍柴 今日已完成 晨瑶: gitkraken团队协作流程教程基本完工. 昭锡:将主页包含UI界面.逻辑处理等与底部栏整合,学习Retrofit网络库. 永盛:更多 c ... 
