1C#泛型(C#_编程指南)CSDN学习整理笔记

合集下载

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范围将进行水压保护,需要保证控制裕量,建议库检时机车运行中,应经常通过显示屏温度界面,观查牵引变流器冷却水压,水温,柜体温及电机温度等参数。

r1c1引用格式

r1c1引用格式

r1c1引用格式
r1c1引用格式是Excel中的一种表示单元格地址的方式。

在r1c1引用格式下,单元格的地址由行号和列号组成,以R和C作为前缀。

例如,A1单元格在r1c1引用格式下可以表示为R1C1,B2单元格可以表示为R2C2。

此外,可以使用绝对引用和相对引用来指定单元格的位置。

相对引用表示单元格相对于当前单元格的位置,如R[1]C[1]表示当前单元格的右下方单元格。

绝对引用表示单元格的位置不受当前单元格的影响,如R1C1表示第一行第一列的单元格。

r1c1引用格式可以方便地进行单元格地址的计算和处理,特别是在使用公式时非常有用。

但是,对于习惯使用A1引用格式的用户来说,需要一定的适应时间。

- 1 -。

凯丰微型kFS一C型 电子称使用说明书

凯丰微型kFS一C型 电子称使用说明书

凯丰微型kFS一C型电子称使用说明书
一、操作说明
1、【开/关】:开机和关机键。

2、【去皮】:置零与去皮键,使用容器称重或窗口数值不归零时可按此键。

3、【计数】:计数产品的个数。

操作方法:按住计数键一秒进入计数状态,按单位键选择个数,把相应个数的物品放在秤上,按计数键确认。

4、背光功能:长按单位键几秒进入。

5、自动关机功能:开机全显示未归零的时候按四下单位键,第四下长按不放。

或开机显示“0”的状态下长按单位键进入,在按单位键。

二、错误提示信息
1、显示“OL”或“EEEF”:表示物品的重量超过最大称量,应立刻把所秤物品取下。

2、显示“LO”或“Lb”表示电池电压过低,产品无法使用,请尽快更换新的电池。

四、外部标准操作
1、按住“去皮”键开机,进入标定状态。

2、按住“单位”键开机,进入标定状态,概据显示的内容选择最大
量程和对应的分度值,确认量程后根据显示的砝码值放上相应的砝码(如需分段两次标定的产品,请按照两次分别显示不同的砝码值,放上分别对应的砝码)进行操作完成标定;显示出现“PASS”字样,校准完成。

“和谐”电1C型

“和谐”电1C型

HXD1C型电力机车HXD1C型电力机车(“和谐”电1C型),是中国铁路使用的交流电传动干线货运电力机车。

1概要HXD1C型电力机车是干线货运用六轴交流电传动电力机车,由南车株洲电力机车为适应中国铁路运输市场的需要而研制的主型机车,其设计参照了株洲电力机车与德国西门子联合研制制造的HXD1型和HXD1B型电力机车,但使用了更多国产化元件,中国南车株洲电力机车方面称,HXD1C型机车的国产化率90%以上。

包括使用IGBT模块(3,300V / 1,200A)的牵引变流器(IGBT芯片仍需从英飞凌等外国公司购买)、网络控制系统等。

轴式为Co-Co,单轴控制技术,六轴每轴装有一台最大功率1,200 kW 的交流电牵引电动机,总功率7200 kW。

可在线路坡度12‰以下的路段,牵引5000吨至5500吨货物列车。

2009年6月22日,铁道部与南车签署合同,订购400台HXD1C型机车,其中120台会由资阳机车有限公司和资阳南车电力机车有限公司生产,其余280台均由株洲电力机车生产。

首台试制车(HXD1C0001)已于2009年4月30日在株洲厂建造完成,至6月12日正式下线。

首两辆机车于6月26日起开始在北京环铁进行试验。

首批机车配属成都铁路局,首两辆机车已于2009年9月30日交付予重庆机务段[5],当年累计交付重庆机务段60台机车。

2009年11月HXD1C型机车在襄渝铁路测试牵引性能、制动性能和动应力。

广铁株洲机务段于2009年11月18日开始接受HXD1C机车。

南车株洲电力机车与铁道部在2010年7月再度签订590台HXD1C型电力机车的新合同,项目总金额近86亿元,其中170台机车由中国南车资阳机车分包。

由株洲厂生产的HXD1C型机车编号HXD1C-0XXX,资阳厂生产的HXD1C型机车编号HXD1C-6XXX。

2012年12月31日18点整.乌鲁木齐铁路局..配属的HXD1C电力机车全部上线运行,担当乌西—柳园间列车牵引任务.2技术数据编辑UIC轴式Co'Co'轨距1,435 mm受流电压交流 25 kV 50 Hz牵引电动机JD160A × 6最高速度120 km/h牵引功率7,200 kW和谐1型机车应急故障处理1 和谐1型电力机车应急故障处理一、机车一节蓄电池电压低于88V时的临时供电办法:1、条件:用有电节给亏电节供电(操纵有电节)。

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

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次无人警惕按钮),否则紧 急制动。

HXD1C型机车自学与故障处理

HXD1C型机车自学与故障处理一、和谐机车牵引特性:(牵引力与机车运行速度的关系)从和谐机车牵引特性曲线可以得出和谐机车在各种速度条件下所能发挥的最大牵引力为:例:当手柄给定的目标速度为120KM/h时,在速度为0~10KM/h时,机车将发挥最大功率570KN,当机车速度为20KM/h时机车只能发挥535KN的功率。

结论:手柄位置一定时,随着速度的增加,能发挥的最大牵引力将逐渐减小。

(手柄目标速度与牵引力百分比关系图)从上图可以看出,运行速度一定的情况下,手柄目标速度的选择决定着机车功率的发挥。

如:当速度为0,手柄给的的目标速度为15KM/h 时,机车牵引力发挥为14%,即:570X14%=79.8KN ;将手柄给定的目标速度提至120KM/h 时,机车牵引力发挥为100%,即:570 X100%=570KN 。

结论:速度一定时,手柄给定目标速度越高,牵引力发挥越大。

二、坡道运行调速手柄级位选择:从经验公式F=G/100×(i+1)计算及上表可以得出列车在各坡道上运行时所需牵引力如下表所示:从上表看,实际运行中列车所需要的牵引力并不是一定数值,即当牵引3500T的列车运行在10‰的坡道上,需要的牵引力为385KN,,牵引3800T的列车运行在11‰的坡道上,则需要456KN牵引力,即可保持列车速度。

所以,运行时,当列车速度达到一定值时,调速手柄不宜放得过高,只要机车所发挥的牵引力大于列车所需要的牵引力即可。

(如果牵引过程中手柄位置太高,就会造成控制系统按手柄给定的目标速度进行控制,致使机车不断进行加载、减载,影响列车运行的平稳性和机车操纵的合理性)HXD1c机车防坡停、运缓操纵提示卡1、天气不良时要加强对机车的沙箱存沙量进行检查,出库前必须对机车砂管撒沙量进行检查。

(注意沙箱盖是否拧好,因为和谐的撒沙方式是通过压力撒沙方式,盖拧不紧会不出沙)2、雨雪天气,列车在坡底时应该将列车速度抢到最大值,一般手柄级位只能高于实际速度值2公里左右,并随着列车速度降低而适当降低手柄级位,防止空转。

新人教PEP六年级英语下册《Unit1_C_Story_time陕西公开课教案》

新⼈教PEP六年级英语下册《Unit1_C_Story_time陕西公开课教案》Unit1 C Story time陕西公开课教案授课教师:Teaching PlanGrade Six Type Story Project Unit1 How tall are you? C Story time学情分析六年级学⽣已经有了⼀定的语⾔基础,⼤部分学⽣表达句⼦不成问题,教师引导学⽣从故事的整体性、⽣活性、任务性、情境性出发,针对本课问题逐⼀化解,根据故事内容不断变化⽅式进⾏语⾔操练,帮助他们理清⼈物关系及表达语⾔的思路,不同层次的学⽣给予不同层次的要求,能⼒弱的学⽣能够理解并朗读本⽂,部分学⽣在朗读的基础上能够表演故事,能⼒稍强的学⽣可以创编及讲述故事,从⽽提⾼英语综合能⼒。

教材分析本课作为Unit1的故事课,呈现的是Zip和Zoom招聘⾜球守门员的故事。

学⽣除了复习巩固⽐较级句型外,还能通过阅读趣味故事复习巩固本单元所学语⾔,并增加语⾔的输⼊,通过上下⽂理解句⼦:Football needs teamwork等相关词汇。

本故事的⼈物较多,需要帮助学⽣理清故事思路,才能更清晰的演绎、复述和改编故事,达到综合运⽤的能⼒。

On the ability 1. Students can listen to the relationship between the characters.2. Students can read out the characteristics of each animal and the final results.3. Most of students can read, retell and act the story out to us.4. Some of students can change, recreate a new story or a new ending and act out.On the knowledge 1. Students can read and understand the story about choosinga goalkeeper.2. Students will consolidate the sentence structure: How tall are you? I am metres. How heavy are you? I am … kilograms.A is … centimetres taller than B. And use them in the right situations.3. Students can understand the meaning of “a goal keeper”“football needs teamwork”, “reach” and “excellent”.On the emotion 1. Students can keep their interest in English learning and reading.2. Different people have different specialties. Try your best to do everything. You will get happiness and teamwork.On learning strategy Cooperation, competition, group work.Cultural consciousness Students know some knowledge about football and football player.Teaching Method Task based teaching method; Situation teaching method; Cooperative language learningTeaching Aids PPT, flash, pictures of animals, headwear, a football, a goal, the score card of a football.Board DesignUnit1 C Story timea new goalkeeper have a try×wait ×catch 10cm 1.8m 86kg ×reach smaller stronger shorter the tallest oneTeaching ProceduresStage Teacher’sactivities Students’activitiesDesignPurposeTimeI: Greeting /Free talk 1. Greet.2. Q1: What’s in1. Good morning.2. Free talk withmy hand?Q2: Do you like playing football? Q3: Do you know there is a football match recently? teacher. Answer thequestions and knowmatch---EuropeanCup.师⽣问好,⾃由谈论中引⼊话题football.1minII:Pre-reading Activity1: Watch the video andanswer thequestions.Q1: What arethey doing?Q2: What do theyneed in a football match?According to thevideo to answer questions. At thesame time, learn the words “a goal, a goalkeeper, have a try”.看世界杯相关的进球录像,增加趣味性,引出⾜球相关词汇,切⼊守门员话题,为本课故事铺垫。

1C开叫之后的叫牌进程

1♣开叫之后的叫牌进程如果说十个打精确的人十之八九都不同,可能会有所夸大,但如果说十之五六都不同,可能会有所保留。

在各层次牌手中,精确叫牌法五花八门,不一而足。

中国桥协目前已经整理出属于自己的标准自然叫牌法,我们将翘首以盼标准精确叫牌法。

凤凰精确对精确制有革命性变革,1C之后的叫牌进程同样如此。

本章介绍凤凰精确1C开叫后富有特色的示弱应叫、半示弱应叫、示强应叫以及特殊示强应叫。

第一节1♣开叫及第一应叫一、1♣开叫1♣开叫:虚叫,16+HCP。

均型,16HCP或者16点某花色仅有QJ 两张或单张大牌的牌除外,如SKQ42 HQJ DAQJ62 CJ9开叫1D或1NT。

6张好高花,有单缺,15HCP可叫1C,如SAKJT96 HA DQJT9C65;SAQJT98 H8 DKQ7 CQJT。

联手有至少8张的高花配合时,24个大牌点足以成局;联手均为均型时,需要25点才能成局。

故无配合时叫无将需要更强的实力,而不就是同伴出一套,您就是单缺就叫无将,甚至将定约定在毫无希望的3NT上。

本体系已将16HCP均型、16HCP4441型排除在1C开叫之外,以确保打3NT有25HCP的实力。

当您开叫1C时,有局方的对手与无局方的对手不同,前者面对已知一把强牌,她只能小心地伺机介入竞叫,而后者就是想抓住一切机会来干扰您。

因此当持有牌型牌且您方有局而对方无局的情况下,低限牌最好不要开叫1C,而要尽快描述牌型。

开叫1C会使对手宽松地介入叫牌,并占据叫牌空间,从而使您无法准确地显示您的持牌情况。

从另一方面来说,当己方无局而对方有局时,您如果拿着牌型牌就可以尽量开叫1C了,因为对手不会轻易参与竞叫。

二、第一应叫1♦:虚叫,0-7HCP。

1♥:特殊示弱应叫,包括8-10或14-15 HCP的均型牌,以及单套弱牌。

1♠:S5+张,8+HCP。

1NT:均型,11-13HCP或16+HCP。

2♣:C5+张,8+HCP。

2♦:D5+张,8+HCP。

放电电流1c

放电电流1c放电电流1C是指电池在1小时内放电至其额定容量的倍率。

例如,一个2000mAh的电池,在放电电流为1C时,其放电时间为1小时。

一、什么是放电电流1C?放电电流1C是指在规定的时间内,将一个完全充满的锂离子电池(或其他类型的充电池)以额定容量的速率进行放电。

这个速率通常被称为“倍率”,因此,当我们说“1C”时,我们实际上是指将一个完全充满的锂离子电池以其额定容量(mAh)进行放电所需的时间。

二、为什么要关注放电电流1C?了解和掌握不同倍率下锂离子电池的性能非常重要。

这可以帮助我们了解如何正确地使用和维护锂离子电池,并确保它们具有最佳性能和寿命。

三、如何计算放电时间?计算方法:容量(mAh)/ 倍率 = 放时长(小时)例如:2000mAh / 1C = 2小时四、不同倍率下锂离子电池表现如何?不同倍率下锂离子电池表现会有所不同。

在低倍率下,如0.2C或0.5C,锂离子电池通常具有更长的寿命和更稳定的性能。

但是,在高倍率下,如2C或3C,锂离子电池可能会表现出更高的能量密度和更高的放电速率。

这对于需要大量能量输出的应用非常有用。

五、放电电流1C对锂离子电池寿命的影响放电电流1C对锂离子电池寿命有一定影响。

在高倍率下进行放电会导致锂离子电池内部温度升高,从而缩短其寿命。

因此,在使用锂离子电池时,应根据应用需求选择适当的倍率,并遵循正确的充放电方法以确保最佳性能和寿命。

六、结论总之,了解和掌握不同倍率下锂离子电池的性能非常重要。

正确地选择适当的倍率,并遵循正确的充放电方法以确保最佳性能和寿命。

通过掌握这些知识,我们可以确保我们所使用的锂离子电池具有最佳性能,并且可以延长其使用寿命。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.1、泛型概述2.0版C#语言和公共语言运行时(CLR)中增加了泛型。泛型将类型参数的概念引入.NETFramework,类型参数使得设计如下类和方法成为可能:这些类和方法将一个或多个类型的指定推迟到客户端代码声明并实例化该类或方法的时候。例如,通过使用泛型类型参数T,您可以编写其他客户端代码能够使用的单个类,而不致引入运行时强制转换或装箱操作的成本或风险,如下所示:

//Declarethegenericclass.publicclassGenericList{VoidAdd(Tinput){}}ClassTestGenericList{PrivateclassExampleClass{}StaticvoidMain(){//Declarealistoftypeint.GenericListlist1=newGenericList();

//Declarealistoftypestring.GenericListlist2=newGenericList();

//DeclarealistoftypeExampleClass.GenericListlist3=newGenericList();}}

泛型概述

使用泛型类型可以最大限度地重用代码、保护类型的安全以及提高性能。

泛型最常见的用途是创建集合类。

.NETFramework类库在System.Collections.Generic命名空间中包含几个新的泛型集合类。应

尽可能地使用这些类来代替普通的类,如System.Collections命名空间中的ArrayList。您可以创建自己的泛型接口、泛型类、泛型方法、泛型事件和泛型委托。

可以对泛型类进行约束以访问特定数据类型的方法。

关于泛型数据类型中使用的类型的信息可在运行时通过使用反射获取。1.2、泛型的优点在公共语言运行时和C#语言的早期版本中,通用化是通过在类型与通用基类型Object之间进行强制转换来实现的,泛型提供了针对这种限制的解决方案。通过创建泛型类,您可以创建一个在编译时类型安全的集合。

使用非泛型集合类的限制可以通过编写一小段程序来演示,该程序使用.NETFramework类库中的ArrayList集合类。ArrayList是一个使用起来非常方便的集合类,无需进行修改即可用来存储任何引

用或值类型。

//The.NETFramework1.1waytocreatealist:System.Collections.ArrayListlist1=newSystem.Collections.ArrayList();list1.Add(3);list1.Add(105);

System.Collections.ArrayListlist2=newSystem.Collections.ArrayList();list2.Add("ItisraininginRedmond.");list2.Add("Itissnowinginthemountains.");

但这种方便是需要付出代价的。添加到ArrayList中的任何引用或值类型都将隐式地向上强制转换为Object。如果项是值类型,则必须在将其添加到列表中时进行装箱操作,在检索时进行取消装箱操作。强制转换以及装箱和取消装箱操作都会降低性能;在必须对大型集合进行循环访问的情况下,装箱和取消装箱的影响非常明显。(附:装箱是将值类型转换为object类型或由此值类型实现的任一接口类

型的过程。当CLR对值类型进行装箱时,会将该值包装到System.Object内部,再将后者存储在托管堆上。取消装箱将从对象中提取值类型。装箱是隐式的;取消装箱是显式的。装箱和取消装箱的概念是类型系统C#统一视图的基础,其中任一类型的值都被视为一个对象。相对于简单的赋值而言,装箱和取消装箱过程需要进行大量的计算。对值类型进行装箱时,必须分配并构造一个新对象。次之,取消装箱所需的强制转换也需要进行大量的计算。)

另一个限制是缺少编译时类型检查;因为ArrayList会将所有项都强制转换为Object,所以在编译时无法防止客户端代码执行类似如下的操作:

System.Collections.ArrayListlist=newSystem.Collections.ArrayList();//Addanintegertothelist.list.Add(3);//Addastringtothelist.Thiswillcompile,butmaycauseanerrorlater.list.Add("ItisraininginRedmond.");

intt=0;//ThiscausesanInvalidCastExceptiontobereturned.foreach(intxinlist){t+=x;}

尽管将字符串和ints组合在一个ArrayList中的做法在创建异类集合时是完全可接受的,并且有时需要有意为之,但这种做法很可能产生编程错误,并且直到运行时才能检测到此错误。

在C#语言的1.0和1.1版本中,只能通过编写自己的特定于类型的集合来避免.NETFramework基类库集合类中的通用代码的危险。当然,由于此类不可对多个数据类型重用,因此将丧失通用化的优点,并且您必须对要存储的每个类型重新编写该类。

ArrayList和其他相似类真正需要的是:客户端代码基于每个实例指定这些类要使用的具体数据类型的方式。这样将不再需要向上强制转换为T:System.Object,同时,也使得编译器可以进行类型检查。换句话说,ArrayList需要一个类型参数。这正是泛型所能提供的。在N:System.Collections.Generic命名空间的泛型List集合中,向集合添加项的操作类似于以下

形式:

//The.NETFramework2.0waytocreatealistListlist1=newList();

//Noboxing,nocasting:list1.Add(3);

//Compile-timeerror://list1.Add("ItisraininginRedmond.");

对于客户端代码,与ArrayList相比,使用List时添加的唯一语法是声明和实例化中的类型参数。虽然这种方式稍微增加了编码的复杂性,但好处是您可以创建一个比ArrayList更安全并且速度更快的列表,对于列表项是值类型的情况尤为如此。1.3、泛型类型参数在泛型类型或方法定义中,类型参数是客户端在实例化泛型类型的变量时指定的特定类型的占位符。泛型类(如泛型介绍(C#编程指南)中列出的GenericList)不可以像这样使用,因为它实际上并不是一个类型,而更像是一个类型的蓝图。若要使用GenericList,客户端代码必须通过指定尖括号中的类型参数来声明和实例化构造类型。此特定类的类型参数可以是编译器识别的任何类型。可以创建任意数目的构造类型实例,每个实例使用不同的类型参数,如下所示:

GenericListlist1=newGenericList();GenericListlist2=newGenericList();GenericListlist3=newGenericListt>();

在每个GenericList实例中,类中出现的每个T都会在运行时替换为相应的类型参数。通过这种替换方式,我们使用一个类定义创建了三个独立的类型安全的有效对象。有关CLR如何执行此替换的更多信息,请参见运行时中的泛型(C#编程指南)。

类型参数命名准则

务必使用描述性名称命名泛型类型参数,除非单个字母名称完全可以让人了解它表示的含

义,而描述性名称不会有更多的意义。

publicinterfaceISessionChannel{/*...*/}publicdelegateTOutputConverter(TInputfrom);publicclassList{/*...*/}

考虑使用T作为具有单个字母类型参数的类型的类型参数名。

publicintIComparer(){return0;}publicdelegateboolPredicate(Titem);publicstructNullablewhereT:struct{/*...*/}务必将“T”作为描述性类型参数名的前缀。

publicinterfaceISessionChannel{TSessionSession{get;}}

考虑在参数名中指示对此类型参数的约束。例如,可以将带有ISession约束的参数命名为

TSession。

1.4、类型参数的约束在定义泛型类时,可以对客户端代码能够在实例化类时用于类型参数的类型种类施加限制。如果客户端代码尝试使用某个约束所不允许的类型来实例化类,则会产生编译时错误。这些限制称为约束。约束是使用where上下文关键字指定的。下表列出了六种类型的约束:

约束说明T:结构类型参数必须是值类型。可以指定除Nullable以外的任何值类型。有关更多信息,请参见使用可以为null的类型(C#编程指南)。

T:类类型参数必须是引用类型;这一点也适用于任何类、接口、委托或数组类型。T:new()类型参数必须具有无参数的公共构造函数。当与其他约束一起使用时,new()约束必须最后指定。

T:名>类型参数必须是指定的基类或派生自指定的基类。

T:称>类型参数必须是指定的接口或实现指定的接口。可以指定多个接口约束。约束接口也

可以是泛型的。

T:U为T提供的类型参数必须是为U提供的参数或派生自为U提供的参数。使用约束的原因

相关文档
最新文档