1C#泛型集合

合集下载

Excel中R1C1样式引用详解

Excel中R1C1样式引用详解

Excel中R1C1样式引用详解这篇文章根据excelhome论坛中的两个帖子进行整理,稍作了修改。

以下内容来自第一个帖子,点击这里可以查看原文。

一、引用单元格:R1C1样式与A1样式比较DanBricklin和BobFrankston使用A1表示电子表格左上角的单元格,Mitch Kapor在Lotus 1-2-3中也是使用这种编址方案。

Microsoft试图改变这种趋势,采用了名为R1C1样式编址方案。

单元格A1称为R1C1,因为它位于第一行,第一列(Row 1, Column 1)。

在20世纪80年代和90年代初期,A1样式称为了标准,Microsoft公司认识到了危机,最终让excel接受了A1样式,并同时支持R1C1样式编址方案。

当前,excel默认使用A1样式。

为什么学习R1C1样式?答案是:1,excel的宏录制器采用的是R1C1样式录制公式。

2,R1C1样式比之A1样式有更高的效率,尤其是对于公式,编写的代码效率会更高。

3,在BVA编辑器中,创建数组公式或基于公式设置条件格式时,采用的是R1C1样式输入公式。

怎么切换R1C1样式?单击Ofice按钮选择Excel选项,在公式类别中选择复选框“R1C1引用样式”。

版面上唯一不同是列标A,B,C--变成数字1,2,3,单元格C5变为R5C2二、EXCEL公式的神奇之处如动画所示,Excel 能智能的填充公式,并向下复制,第一次看到一定感觉非常惊奇。

实际这并不惊奇,因为,Excel内部使用的是R1C1样式的公式,以A1样式显示地址和公式。

如果将动画所示的工作表切换成R1C1样式表示法,将发现C2:C7的公式都是形同的。

三、在VBA中采用A1样式与R1C1样式之比较如上述动画实例,如用A1样式编写代码,代码可以类似下面这样:Sub chengji()Dim Finalrow As IntegerFinalrow = Cells(Rows.Count, 2).End(xlUp).Row '求第二列数据行数Range("c2").Formula = "=a2*b2"Range("C2").Copy Destination:=Range("C2:C" & Finalrow)End Sub上述代码在第二行输入公式,再向下复制公式如果用R1C1样式只需一条语句就可整列输入公式Sub chengji()Dim Finalrow As IntegerFinalrow = Cells(Rows.Count, 2).End(xlUp).Row '求第二列数据行数Range("c2:c" & Finalrow).FormulaR1C1 = "=RC[-1]*RC[-2]"End Sub使用R1C1样式的优点是,所有C列的公式都是相同的,不需要改变四、怎么引用R1C1样式R1C1样式采用R来表示行,C来表示列4.1 样式的相对引用对于列正数表示向右移指定数量的列,负数反之。

HXD1C机车ACU及TCU通讯故障处理

HXD1C机车ACU及TCU通讯故障处理
• 3. 经以上处理故障未消除时,进站停车后进行“大复
位”处理。
=21- =21- =21- =22- =22- =22- =23- =23- =24- =24- =43F144 F134 F157 F101 F102 F104 F108 F109 F103 F105 F139
主断 受电弓
过分 相 撒沙
_ MTP M电

=28F132 CCBII
_
EPC U电源
=28F133 CCBII
_ LCD M电 源
=32F113
辅助 控制
=31F115
ACU1 电源 辅变1
=31F116
ACU2 电源 辅变2
=34F181
制动 系统 防寒
=51F171
头顶 电源
辅助 压缩 机
VCM 1电源
VCM 2电源
GWM /ERM
GU1/
TCU1 主变1
GU2/
TCU2 主变2
1端司 机室 I/O
2端司 机室 I/O
第十条 ACU通信故障的处理
• 现象:显示屏报ACU1/2 MVB网卡板通信故障, ACU1/2通信故障。显示屏网络拓扑图上ACU1/2 图标为红色/咖啡色。
ACU及TCU通讯故障
货五指导组 洪文赋
第九条 TCU1/2通信故障的处理
• 现象:显示屏报TCU 1/2MVB网卡板通信故障, TCU1/2通信故障。显示屏网络拓扑图上TCU1/2图 标为红色/咖啡色。
正常
第九条 TCU1/2通信故障的处理
• 处理:
• 1.按压“微机复位”按钮,重合主断。
• 2.将相应的TCU1/2进行复位(断合相应的TCU电源自动 开关1次后按压微机复位按钮),若故障未消除则切除 故障的TCU维持运行。(根据列车运行情况,也可直接 切除故障的TCU维持运行,停站后再进行处理。)

HXD1C故障处理

HXD1C故障处理

一、受电弓无法升起:1.按压一次“微机复位”按钮,继续升弓;2.如果仍然无法升起,则根据显示器界面信息提示栏的提示进行处理;3如果处理无效,则进行“大复位”处理。

二、如果是过分相后主断无法闭合:1.主断状态显示为黄色,可先将主断扳键开关打分位,再合主断;2.调速手柄回零,按压“微机复位”按钮,继续合主断;3.如果主断仍然无法闭合则根据显示器主界面信息提示栏的提示进行处理。

4.如无效需按“微机复位”3次,每次间隔2秒,隔离相应设备维持运行;5进行“大复位”恢复。

三、牵引力无法正常发挥:1. ①全车无牵引力,调速手柄回零,按压“微机复位”按钮,推动调速手柄给流,如果仍然无流,则根据显示器主界面信息提示栏的提示进行处理;②.进行“大复位”恢复。

2.①某架或某几台电机无牵引力,牵引力不足时,调速手柄回零,按压“微机复位”按钮,推动调速手柄给流,牵引力足够时,维持运行或站停处理,调速手柄回零,按压“微机复位”按钮,推动调速手柄给流;②调速手柄回零,分主断,按压显示器主界面隔离解锁按钮,合主断给流;③按压显示屏上方故障键,确认是否存在“三相开关断开”或“MCB打开”等故障,如果有,请闭合低压柜上相应的开关,④进行“大复位”恢复。

3. ①调速手柄设定不能提升,机车牵引力无法正常发挥或AXM模块故障;②把开关=21-s09(=21-S29)达到“紧急运行”位,让机车进入紧急运行状态,是司控器的级位设定位置为节点控制,当级位给在3/3(最大)位时,机车牵引力逐步增加,当级位给在2/3位时,机车牵引力保持不变,当级位给在1/3位时,机车牵引力逐渐减少。

注意此时主司控器控制模式为非自复式的,故司乘人员操作时要密切列车实际速度,及时调整司控级位,防止超速。

注意:①总分缸压力不得低于500Kpa:②牵引变流器冷水呀超出2.0~3.3bar范围将进行水压保护,需要保证控制裕量,建议库检时机车运行中,应经常通过显示屏温度界面,观查牵引变流器冷却水压,水温,柜体温及电机温度等参数。

放电电流1c

放电电流1c

放电电流1c1. 什么是放电电流1c放电电流1c是指在电池放电过程中,放电电流大小为电池容量的1倍。

电池容量是指电池能够存储和释放的电量,通常以安时(Ah)计量。

因此,当一个电池以1c电流放电时,其放电电流大小等于其容量。

2. 放电电流1c的特点放电电流1c具有以下特点:2.1 高放电速率放电电流1c是相对较高的放电速率,意味着电池能够在较短的时间内释放出其全部电能。

这在某些应用场景中非常重要,如电动工具、电动车等需要快速获取能量的设备。

2.2 高放电效率由于放电电流1c相对较高,电池在放电过程中能够更高效地转化为电能。

这使得电池的综合使用成本更低,并提高了电池系统的能量利用率。

2.3 限制电池寿命尽管放电电流1c具有高放电速率和高放电效率的优点,但对电池的使用寿命也会带来一定的限制。

较高的放电速率会加速电池内部化学反应的进行,导致电池的寿命降低。

3. 放电电流1c的应用领域放电电流1c广泛应用于各种领域,以下是一些常见的应用领域:3.1 电动交通工具电动汽车、电动自行车等电动交通工具需要大容量的电池来提供持续的动力。

放电电流1c可以满足这些交通工具对快速充电和高能量输出的需求。

3.2 便携式电子设备智能手机、平板电脑、笔记本电脑等便携式电子设备需要经常充放电。

放电电流1c可以使这些设备在较短的时间内充满电,并提供稳定可靠的电能供应。

3.3 光伏储能系统光伏储能系统用于存储太阳能并在需要时释放出电能。

放电电流1c可以使光伏储能系统在高负载需求下提供稳定的电源输出。

3.4 能源存储系统能源存储系统用于储存电网、风力发电、水力发电等地面能源。

放电电流1c可以使能源存储系统在电力需求高峰时段快速响应并提供持续的电能输出。

4. 放电电流1c的优缺点放电电流1c作为一种放电方式,具有以下的优点和缺点:4.1 优点•高放电速率,能够快速获取电能。

•高放电效率,能够更高效地转化为电能。

•适用于需要大容量和高能量输出的应用。

电池规格里的1c

电池规格里的1c

电池规格里的1c1C是指电池的放电倍率,也称为C倍率。

C倍率是指电池能够提供额定容量的放电电流。

当电池的C倍率为1C时,电池能够以其额定容量的电流进行放电。

例如,一个1000mAh的电池,在1C放电倍率下,能够提供1000mA的电流进行放电。

电池的放电倍率对于电池的使用具有重要的影响。

一般来说,较高的放电倍率意味着电池能够提供更大的电流,从而可以满足更高功率设备的需求。

而较低的放电倍率则适用于低功率设备。

放电倍率的选择要根据具体的应用需求来决定。

在实际使用中,我们经常会遇到一些电子设备需要较高的放电倍率才能正常工作,而电池的放电倍率又无法满足要求的情况。

这时,我们可以通过并联多个电池来实现较高的放电倍率。

例如,如果一个设备需要2C的放电倍率,而我们手头只有1C的电池,那么我们可以并联两个相同规格的电池来满足需求。

放电倍率还与电池的寿命有关。

一般来说,较高的放电倍率会导致电池的寿命缩短。

这是因为高倍率放电会导致电池内部产生较大的热量,加速了电池的老化过程。

因此,在选择电池时,我们需要权衡放电倍率和电池寿命之间的关系,根据具体的应用需求进行选择。

除了放电倍率,电池还有其他一些重要的规格参数。

例如,电池的容量、电压和内阻等都会对电池的使用产生影响。

容量是指电池能够存储的电量,通常以mAh或Ah为单位。

电压是指电池的电压水平,不同类型的电池具有不同的电压。

内阻是指电池内部的电阻,会影响电池的输出电流和电压稳定性。

在选择电池时,我们需要综合考虑这些参数,根据具体的应用需求来选择合适的电池。

对于一些高功率设备,需要选择较高放电倍率的电池来满足需求。

而对于一些低功率设备,放电倍率可以选择较低的电池。

此外,还需要注意电池的容量是否能够满足设备的使用时间要求,以及电池的电压是否与设备的需求匹配。

电池的放电倍率是电池规格中的重要参数之一。

合理选择电池的放电倍率对于设备的正常工作和电池寿命具有重要意义。

在选择电池时,我们需要综合考虑放电倍率、容量、电压等参数,根据具体的应用需求来进行选择。

HXD1C电力机车常见故障及处理方法

HXD1C电力机车常见故障及处理方法

湖南铁路科技职业技术学院毕业设计(论文)HXD1C电力机车常见故障及处理方法目录一、HXD1C简述 (1)1总体结构----------------------------------------------------------1 2电气系统----------------------------------------------------------2 3控制系统----------------------------------------------------------2 4转向架-------------------------------------------------------------3 5冷却塔 (3)6牵引变流器 (3)7主变压器----------------------------------------------------------4 8辅助变流器--------------------------------------------------------4二、HXD1C的常见故障及其处理-------------------------------------------41受电弓无法升起或自动降弓故障------------------------------------4 2HXD1C型电力机车主断路器故障 (5)3提牵引主手柄,无牵引力------------------------------------------7 4主变流器故障 (7)5辅助变流器故障 (8)6油泵故障---------------------------------------------------------8 7主变油温高故障---------------------------------------------------8 8牵引风机故障-----------------------------------------------------9 9冷却塔风机故障处理----------------------------------------------9 10空转故障 (9)11110V充电电源(PSU)故障---------------------------------------9 12控制回路接地 (10)13原边过流故障 (10)14各种电气故障不能复位、不能解决的处理-------------------------10 15制动机系统故障产生的惩罚制动---------------------------------10三、其他故障 (10)1控制电源UOv接地故障 (10)2空调接地引起ACU接地故障--------------------------------------11 3主变流器门极驱动板故障-----------------------------------------11 4主流器整流/逆变模块故障---------------------------------------12四、HXD1C日常运用维护保养--------------------------------------------121入库后维护 (12)2运行中维护----------------------------------------------------12 3日常生活维护-------------------------------------------------13致谢 (14)毕业设计(论文)HXD1C电力机车常见故障及处理方法摘要本文介绍了HXD1C型电力机车有关内容的常见故障及其处理方法和日常维护及保养方法,HXD1C型电力机车是交一直一交流电传动的单相工频交流电力机车,机车主电路由主变压器、牵引变流器、牵引电动机三大部分构成。

HXD1C电力机车缩写及意义

HXD1C电力机车缩写及意义4QC:4象限整流器ATP:机车自动保护BAL:平衡BC:制动缸BC—pressure:制动缸压力BCU:制动控制单元BP:列车管CCBII:制动控制单元CCU:中央控制单元DER:熄火引擎调节EBV:电子制动阀控制器EP—brake:电空制动EPCU:电空控制单元ED—brake:电制动ER:均衡风缸HVB:高压断路器(即主断路器)HV—cable:高压电缆LCDM:制动显示屏LED:发光二极管LRU:在线可更换单元LVC:低压柜MCB:小自动开关MinCB:小自动开关MCU:司机控制器M—IPM:集成处理器模块MMI:人机接口MP:总风管MR:总风缸MVB:多功能车辆总线MVB:多功能列车总线PCS:气动切除/电源控制开关PSW:压力开关PWM:脉宽调节ST:状态文本TCU:牵引控制单元TPCB:三相断路器TP-20:针测试端口Tract./Brak.Eff.:牵引/制动力UIC:国际铁路工程师协会WTB:双绞式列车总线HXD1C制动柜部件及其代码意义U99:连锁钥匙阀B01A24:总风管截止塞门B01S10:无人警惕模块SIFAB01P50PSW:控制模块B01U43:辅助空气压缩机模块B01B20:电空控制单元EPCUB46MVB:集成处理器模块M-IPMB01B47:电源/继电器接口模块B01Z10:塞门模块B01F41:撒砂模块B01B40:弹簧动作器模块B01U76:风缸B01A13:风缸。

HXD1C机车牵引封锁、惩罚制(1)


达到缓解条件后,按压监控装置缓解 键,将自阀手柄置抑制位1秒以上,确 认“惩罚制动、动力切除”红字消 失,回运转位缓解。
VCM1、VCM2同时断开,(同时伴随机车 闭合VCM1、VCM2待装置自检后,将自
7
断主断、降弓),制动显示屏显示动力 切除、惩罚制动,微机显示屏显示“显
阀手柄置抑制位1秒以上,确认“惩罚 制动、动力切除”红字消失,回运转
HXD1C机车惩罚制动提示卡
什么是惩罚制动,为何要实施惩罚制动?
惩罚制动:当机车发生给制动机供电的自动开关跳开、制动系统内部故障、司机错 误操作或精力不集中等情况时保证列车安全的一种制动措施。实施惩罚制动有效的 保证了列车在机车制动系统内部故障时可靠停车、实现了监控装置的机控功能、避 免了由于司机错误操作造成动轮抱闸运行,确保了行车安全。
闭合制动控制单元电源自动开关=28F131,X-IPM模块POWER灯亮,待自检 完成后,CPU灯亮,将自阀手柄置抑制 位1秒以上,确认“动力切除”红字消 失,回运转位缓解。
3
断开制动机辅助电源自动开关=28F132,X-IPM模块制动机内部通讯失败 NETWORK FAIL红灯亮,微机显示屏提示 “制动系统三级故障“,均衡风缸降至 0kpa,列车管降至77kpa。
0kpa,列车管减压至77kpa。
力切除”红字消失,回运转位缓解。
消除第二位机车的惩罚制动源后,将
10
来自重联机车的第二位机车的惩罚制动 要求。
自阀手柄置抑制位1秒以上,确认“惩 罚制动、动力切除”红字消失,回运
转位缓解。
重要提示:惩罚制动故障(惩罚制动请求后,制动缸5秒后没有压力)相关信息在显 示屏显示,要求司机在10秒内进行操作(2秒内连续按2次无人警惕按钮),否则紧 急制动。

Unit1Topic2SectionC课件2023-2024学年仁爱版英语九年级年级上册


Situation now
Living conditions __a_r_e_im__p_r_o_v_in_g__ra_p_i_d_ly_____ The natural environment _is__b_e_c_o_m_i_n_g_b_e_t_te_r__a_n_d_b_e.tter
serious The population problem is still
What a large population!
Large population caused many social problems.
People had less living space.
Large population caused many social problems.
There was more pollution.
Listen to Par.2 and fill in the blanks. 参考1c的表格
the problems caused by large population
less _l_iv_i_n_g_s_p_a_c_e___
Social problems
fewer __j_o_b___ opportunities less __w_a_t_e_r_ and _e_n_e_r_g_y crowded __c_it_ie_s___
Two thirds of the water__i_s__in the glass.
heavy __t_ra_f_fi_c___
one of the measures to deal with the problems
One-child policy 独生子女政策
Read Par.3 and mark T / F.

JB-1C说明书

JB-1C粗糙度测试仪说明书上海泰明光学仪器有限公司一,概论JB--1C型粗糙度测量仪是一种表面粗糙度的测量仪,它广泛应用于测量各种表面的粗糙度的参数。

仪器采用带导头的传感器,通过与微处理机技术的相结合,使仪器易于操作和测量,且稳定和可靠。

还可通过打印机打印出粗糙度的参数,以及轮廓的曲线(仅供参考)。

仪器的安放,应有一个良好的环境。

一个稳定的基座,一个防尘的环境,尽量避免震动,并且隔离噪声源,输入电源应有良好的接地。

在使用本仪器前,望仔细阅读本说明书,并在说明书的指导下,安装和使用粗糙度测量仪。

二,主要技术指标1,被测件范围:1)平面2)外圆3)内孔(孔径> φ7mm)2,测量范围:Ra 0.001um --- 10um3,分辨率:0.005um4,取样长度λc: 0.25mm ,0.8mm ,2.5mm 三种5,测量长度Ln : 1)0.25mm 分为1.5mm ,1.75mm ,2mm 三档,2)0.8mm 分为3.2mm ,4mm ,4.8mm ,5.6mm ,6.4mm五档, 3)2.5mm 分为10mm ,12.5mm ,15mm 三档。

6)示值误差: < 10 %7)评定参数: Ra ,Ry ,Rmax ,Rt ,Rzd ,Rz1 ,R3z ,Rp ,Sm ,S 等8)外接电源: 220V, 50Hz + 10 %9)使用环境:室温,无强磁场,无较大的震动,无腐蚀性气体,防尘,无噪声干扰源。

三,测量原理JB-1C型粗糙度测量仪属于接触式的粗糙度测量,它基于感应式位移传感的原理,测量出粗糙度的各个参数。

在这个系统里。

一个金刚石触针被固定在一移动极板上(铁氧体极板),在被测表面上移动。

在零位状态时,这些极板离开定位于传感器外壳上的两个线圈,有一定的距离,且有一高频的震荡信号在这两个线圈内流动。

如果铁氧体极板与线圈间的距离改变了(由于传感器的金刚石触针在一粗糙表面上移动),线圈的电感发生变化,而测量仪的微机系统,则对此的变化,进行采样、数据转换处理后,在液晶屏上显示出被测物表面的粗糙度参数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
第3页共6页
西安深蓝软件
Compare 方法的参数为要进行比较的两个同类型对象,返回值为 int 类型,返回值处理规则 与 CompareTo 方法相同。其中的 Comparer.Default 返回一个内置的 Comparer 对象,用于比 较两个同类型对象。
下面用新定义的这个比较器对集合进行排序:
//按照姓名对集合进行排序 persons.Sort(NameComparer.Default);
//输出所有人姓名 foreach (Person p in persons) {
Console.WriteLine(); //输出次序为"李四"、"王五"、"张三" }
还可以通过委托来进行集合排序,首先要定义一个供委托调用的方法,用于存放比较规则, 可以用静态方法。请看下面的代码: class PersonComparison {
可以看到,泛型集合大大简化了集合的实现代码,通过它,可以轻松创建指定类型的集合。 非但如此,泛型集合还提供了更加强大的功能,下面看看其中的排序及搜索。
泛型集合的排序 排序基于比较,要排序,首先要比较。比如有两个数 1、2,要对他们排序,首先就 要比较这两个数,根据比较结果来排序。如果要比较的是对象,情况就要复杂一点,比如对 Person 对象进行比较,则既可以按姓名进行比较,也可以按年龄进行比较,这就需要确定 比较规则。一个对象可以有多个比较规则,但只能有一个默认规则,默认规则放在定义该对
第2页共6页
西安深蓝软件
象的类中。默认比较规则在 CompareTo 方法中定义,该方法属于 IComparable<T>泛型接口。
请看下面的代码:
class Person :IComparable<Person> {
//按年龄比较 public int CompareTo(Person p) { return this.Age - p.Age; }
//姓名 public string Name { get { return _name; } }
//年龄 public int Age { get { return _age; } }
}
//创建 Person 对象 Person p1 = new Person("张三", 30); Person p2 = new Person("李四", 20); Person p3 = new Person("王五", 50);
}
CompareTo 方法的参数为要与之进行比较的另一个同类型对象,返回值为 int 类型,如果返 回值大于 0,表示第一个对象大于第二个对象,如果返回值小于 0,表示第一个对象小于第二 个对象,如果返回 0,则两个对象相等。 定义好默认比较规则后,就可以通过不带参数的 Sort 方法对集合进行排序,如下所示:
//按照默认规则对集合进行排序 persons.Sort();
//输出所有人姓名 foreach (Person p in persons) {
Console.WriteLine(); //输出次序为"李四"、"张三"、"王五" }
实际使用中,经常需要对集合按照多种不同规则进行排序,这就需要定义其他比较规则,可 以在 Compare 方法中定义,该方法属于 IComparer<T>泛型接口,请看下面的代码: class NameComparer : IComparer<Person> {
什么是泛型? 泛型是 C# 2.0 中的新增元素(C++中称为模板),主要用于解决一系列类似的问题。 这种机制允许将类名作为参数传递给泛型类型,并生成相应的对象。将泛型(包括类、接口、 方法、委托等)看作模板可能更好理解,模板中的变体部分将被作为参数传进来的类名称所 代替,从而得到一个新的类型定义。泛型是一个比较大的话题,在此不作详细解析,有兴趣 者可以查阅相关资料。
//按姓名比较 public static int Name(Person p1, Person p2) { return pare(p1. Name, );
} }
方法的参数为要进行比较的两个同类型对象,返回值为 int 类型,返回值处理规则与 CompareTo 方法相同。然后通过内置的泛型委托 parison<T>对集合进行排序:
第6页共6页
val += + ","; }
} }
return val.Substring(0, val.Length - 1);
//创建并填充 Persons 集合 Persons PersonCol = new Persons(); PersonCol.Add(p1); PersonCol.Add(p2); PersonCol.Add(p3);
怎样创建泛型集合? 主要利用 System.Collections.Generic 命名空间下面的 List<T>泛型类创建集合, 语法如下:
List<T> ListOfT = new List<T>(); 其中的"T"就是所要使用的类型,既可以是简单类型,如 string、int,也可以是用户自定义类 型。下面看一个具体例子。
型类也是类,因此可以通过继承来进行扩展。请看下面的代码:
//定义 Persons 集合类 class Persons : List<Person> {
//取得集合中所有人姓名 public string GetAllNames() { if (this.Count == 0) return "";
string val = ""; foreach (Person p in this) {
//存放排序器实例 public static NameComparer Default = new NameComparer();
//按姓名比较 public int Compare(Person p1, Person p2) { return pare (, ); }
//输出所有的中年人姓名 foreach (Person p in MidAgePersons) {
Console.WriteLine() //输出"王五" }
第5页共6页
西安深蓝软件
泛型集合的扩展 如果要得到集合中所有人的姓名,中间以逗号隔开,那该怎么处理? 考虑到单个类可以提供的功能是有限的,很自然会想到对 List<T>类进行扩展,泛
西安深蓝软件
集合是 OOP 中的一个重要概念,C#中对集合的全面支持更是该语言的精华之一。
为什么要用泛型集合? 在 C# 2.0 之前,主要可以通过两种方式实现集合:
a.使用 ArrayList 直接将对象放入 ArrayList,操作直观,但由于集合中的项是 Object 类型,因此每 次使用都必须进行繁琐的类型转换。 b.使用自定义集合类 比较常见的做法是从 CollectionBase 抽象类继承一个自定义类,通过对 IList 对象 进行封装实现强类型集合。这种方式要求为每种集合类型写一个相应的自定义类,工作量较 大。泛型集合的出现较好的解决了上述问题,只需一行代码便能创建指定类型的集合。
//输出所有人姓名 Console.Write(PersonCol.GetAllNames()); //输出“张三,李四,王五”
小结: 本文着重于介绍运用 C# 2.0 中的泛型来实现集合,以及对集合功能进行扩展,恰当
的运用泛型集合,可以减少很多重复工作,极大的提高开发效率。实际上,集合只不过是泛 型的一个典型应用
//创建类型为 Person 的对象集合 List<Person> persons = new List<Person>();
//将 Person 对象放入集合 persons.Add(p1); persons.Add(p2); persons.Add(p3);
//输出第 2 个人的姓名 Console.Write(persons[1].Name);
parison<Person> NameComparison = new paris on<Person>();
persons.Sort(NameComparison);
//输出所有人姓名 foreach (Person p in persons) {
Console.WriteLine(); //输出次序为"李四"、"王五"、"张三" }
第4页共6页
西安深蓝软件
可以看到,后两种方式都可以对集合按照指定规则进行排序,但笔者更偏向于使用委托方式, 可以考虑把各种比较规则放在一个类中,然后进行灵活调用。
泛型集合的搜索 搜索就是从集合中找出满足特定条件的项,可以定义多个搜索条件,并根据需要进行 调用。首先,定义搜索条件,如下所示:
class PersonPredicate {
//找出中年人(40 岁以上)
public static bool MidAge(Person p)
{
if (p.Age >= 40)
return true;
else
return false;
} }
上面的搜索条件放在一个静态方法中,方法的返回类型为布尔型,集合中满足特定条件的项 返回 true,否则返回 false。然后通过内置的泛型委托 System.Predicate<T>对集合进行搜 索: System.Predicate<Person> MidAgePredicate = new System.Predicat e<Person>(PersonPredicate.MidAge); List<Person> MidAgePersons = persons.FindAll(MidAgePredicate);
相关文档
最新文档