ÓÑÇéÌáʾ£ºÈç¹û±¾ÍøÒ³´ò¿ªÌ«Âý»òÏÔʾ²»ÍêÕû£¬Çë³¢ÊÔÊó±êÓÒ¼ü¡°Ë¢Ð¡±±¾ÍøÒ³£¡ÔĶÁ¹ý³Ì·¢ÏÖÈκδíÎóÇë¸æËßÎÒÃÇ£¬Ð»Ð»£¡£¡ ±¨¸æ´íÎó
ϲÊéÍø ·µ»Ø±¾ÊéĿ¼ ÎÒµÄÊé¼Ü ÎÒµÄÊéÇ© TXTÈ«±¾ÏÂÔØ ½øÈëÊé°É ¼ÓÈëÊéÇ©

VB2008´ÓÈëÃŵ½¾«Í¨(PDF¸ñʽӢÎÄ°æ)-µÚ78ÕÂ

°´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·­Ò³£¬°´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ£¬°´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿£¡
¡ª¡ª¡ª¡ªÎ´ÔĶÁÍꣿ¼ÓÈëÊéÇ©ÒѱãÏ´μÌÐøÔĶÁ£¡




wanted¡¡to¡¡add¡¡an¡¡element¡¡into¡¡the¡¡list¡£¡¡



If¡¡_roomGroupings¡¡Is¡¡Nothing¡¡Then¡¡

¡¡¡¡¡¡¡¡_roomGroupings¡¡=¡¡NewRoomGroup£¨£©¡¡

Else¡¡¡¡

¡¡¡¡¡¡¡¡_roomGroupings¡£Insert£¨NewRoomGroup£¨£©£©¡¡

End¡¡If¡¡



¡¡¡¡¡¡¡¡¡¡The¡¡code¡¡that¡¡uses¡¡the¡¡placeholder¡¡is¡¡shorter¡¡and¡¡simpler£»¡¡however£»¡¡it¡¡also¡¡requires¡¡a¡¡dangling¡¡¡¡

instance¡¡of¡¡RoomGrouping¡¡that¡¡has¡¡no¡¡real¡¡value¡£¡¡I¡¡chose¡¡the¡¡dangling¡¡approach¡¡because¡¡I¡¡am¡¡¡¡

making¡¡the¡¡decision¡¡that¡¡a¡¡room¡¡grouping¡¡with¡¡no¡¡identifier¡¡is¡¡the¡¡default¡¡room¡¡grouping¡£¡¡



Adding¡¡a¡¡Room¡¡Grouping¡¡



The¡¡following¡¡code¡¡adds¡¡a¡¡room¡¡grouping¡¡£¨added¡¡to¡¡the¡¡class¡¡¡¡LightingController£©¡£¡¡



¡¡¡¡¡¡¡¡Public¡¡Function¡¡AddRoomGrouping£¨ByVal¡¡description¡¡As¡¡String£©¡¡As¡¡Object¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Dim¡¡grouping¡¡As¡¡RoomGrouping¡¡=¡¡New¡¡RoomGrouping£¨£©¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡With¡¡£û¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£Description¡¡=¡¡description£»¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£Rooms¡¡=¡¡Nothing¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£ý¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡_roomGroupings¡£Insert£¨grouping£©¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡grouping¡¡

¡¡¡¡¡¡¡¡End¡¡Function¡¡¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡236¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

214¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡AP¡¡T¡¡E¡¡R¡¡¡¡¡¡8¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡A¡¡R¡¡N¡¡IN¡¡G¡¡¡¡¡¡AB¡¡OU¡¡T¡¡¡¡¡¡CO¡¡M¡¡P¡¡O¡¡N¡¡E¡¡N¡¡TO¡¡R¡¡IE¡¡N¡¡T¡¡E¡¡D¡¡¡¡AR¡¡C¡¡HI¡¡TE¡¡CT¡¡U¡¡R¡¡E¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡To¡¡add¡¡a¡¡new¡¡room¡¡grouping£»¡¡you¡¡instantiate¡¡RoomGrouping£»¡¡assign¡¡the¡¡data¡¡members£»¡¡and¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡then¡¡call¡¡the¡¡method¡¡_roomGroupings¡£Insert£¨£©¡¡to¡¡insert¡¡the¡¡new¡¡room¡¡grouping¡¡into¡¡the¡¡linked¡¡list¡£¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Let¡¯s¡¡look¡¡at¡¡the¡¡technique¡¡for¡¡assigning¡¡data¡¡members£»¡¡called¡¡object¡¡initialization¡£¡¡In¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡previous¡¡examples£»¡¡when¡¡an¡¡object¡¡was¡¡instantiated¡¡and¡¡we¡¡wanted¡¡to¡¡assign¡¡default¡¡values£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡we¡¡would¡¡create¡¡a¡¡constructor¡¡with¡¡the¡¡appropriate¡¡parameters¡£¡¡However£»¡¡another¡¡way¡¡is¡¡to¡¡instan

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡tiate¡¡the¡¡object¡¡and¡¡define¡¡a¡¡block¡¡that¡¡assigns¡¡the¡¡appropriate¡¡data¡¡members¡¡or¡¡properties¡£¡¡In¡¡the¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡case¡¡of¡¡RoomGrouping£»¡¡there¡¡are¡¡two¡¡publicly¡¡defined¡¡data¡¡members£º¡¡Description¡¡and¡¡Rooms£º¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£Description¡¡=¡¡description£»¡¡_¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£Rooms¡¡=¡¡Nothing¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡The¡¡Description¡¡and¡¡¡¡Rooms¡¡data¡¡members¡¡have¡¡assign¡¡access£»¡¡which¡¡is¡¡important¡¡as¡¡this¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡technique¡¡only¡¡works¡¡with¡¡properties¡¡that¡¡are¡¡not¡¡read¡­only¡£¡¡To¡¡assign¡¡a¡¡data¡¡member¡¡or¡¡prop

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡erty£»¡¡after¡¡the¡¡object¡¡instantiation£»¡¡add¡¡the¡¡With¡¡keyword£»¡¡and¡¡then¡¡within¡¡curly¡¡brackets£»¡¡assign¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡each¡¡individual¡¡data¡¡member¡¡using¡¡a¡¡key/value¡¡pair£»¡¡in¡¡this¡¡form£º¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡With¡¡£û¡¡¡£Key1¡¡=¡¡value1£»¡¡¡£Key2¡¡=¡¡value2¡¡£ý¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡The¡¡key¡¡represents¡¡the¡¡data¡¡member¡¡property¡¡to¡¡assign£»¡¡and¡¡the¡¡value¡¡is¡¡the¡¡data¡¡that¡¡is¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡assigned¡¡to¡¡the¡¡data¡¡member¡¡or¡¡property¡£¡¡In¡¡the¡¡form¡¡example£»¡¡the¡¡properties¡¡Key1¡¡and¡¡¡¡Key2¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡are¡¡set¡£¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Another¡¡technique¡¡of¡¡interest¡¡in¡¡the¡¡code¡¡to¡¡add¡¡a¡¡room¡¡grouping¡¡is¡¡the¡¡definition¡¡of¡¡a¡¡data¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡handle¡¡when¡¡passing¡¡information£º¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡grouping¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡In¡¡the¡¡implementation¡¡of¡¡AddRoomGrouping£¨£©£»¡¡the¡¡variable¡¡grouping¡¡is¡¡assigned¡¡an¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡instance¡¡of¡¡RoomGrouping¡£¡¡The¡¡declaration¡¡of¡¡the¡¡RoomGrouping¡¡class¡¡limits¡¡its¡¡scope¡¡to¡¡the¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡LibLightingSystem¡¡assembly¡¡only£»¡¡while¡¡the¡¡declaration¡¡of¡¡¡¡LightingController¡¡is¡¡public¡£¡¡If¡¡the¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡method¡¡AddRoomGrouping£¨£©¡¡had¡¡attempted¡¡to¡¡return¡¡an¡¡instance¡¡of¡¡RoomGrouping£»¡¡the¡¡piler¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡would¡¡have¡¡marked¡¡this¡¡as¡¡an¡¡error£»¡¡because¡¡the¡¡scope¡¡is¡¡inconsistent¡£¡¡Assuming¡¡for¡¡the¡¡moment¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡that¡¡you¡¡did¡¡want¡¡to¡¡return¡¡an¡¡instance¡¡of¡¡RoomGrouping£»¡¡your¡¡only¡¡solution¡¡would¡¡be¡¡to¡¡declare¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡RoomGrouping¡¡as¡¡public¡£¡¡The¡¡declaration¡¡change¡¡is¡¡the¡¡wrong¡¡solution£»¡¡because¡¡RoomGrouping¡¡is¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡a¡¡class¡¡without¡¡declared¡¡methods¡¡£¨other¡¡than¡¡the¡¡base¡¡class¡¡methods£©¡¡and¡¡has¡¡public¡¡data¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡members¡£¡¡It¡¡is¡¡a¡¡class¡¡for¡¡a¡¡specific¡¡purpose¡¡and¡¡should¡¡not¡¡be¡¡shared¡£¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Declaring¡¡RoomGrouping¡¡as¡¡public¡¡is¡¡the¡¡wrong¡¡approach£»¡¡so¡¡another¡¡solution¡¡is¡¡needed¡£¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡You¡¡could¡¡add¡¡a¡¡counter¡¡data¡¡member¡¡to¡¡the¡¡¡¡RoomGrouping¡¡declaration¡¡and¡¡return¡¡an¡¡Integer¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡value¡¡indicating¡¡the¡¡RoomGrouping¡¡instance¡¡you¡¡are¡¡referring¡¡to¡¡in¡¡the¡¡list¡£¡¡However£»¡¡that¡¡would¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡mean¡¡having¡¡access¡¡to¡¡the¡¡list¡¡somewhere£»¡¡and¡¡then¡¡needing¡¡to¡¡iterate¡¡to¡¡find¡¡the¡¡appropriate¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡RoomGrouping¡¡instance¡£¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡The¡¡solution¡¡is¡¡to¡¡declare¡¡the¡¡method¡¡as¡¡returning¡¡a¡¡type¡¡Object¡£¡¡When¡¡you¡¡use¡¡Object£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡you¡¡are¡¡defining¡¡that¡¡your¡¡method¡¡is¡¡giving¡¡you¡¡an¡¡object¡¡instance¡£¡¡The¡¡caller¡¡may¡¡or¡¡may¡¡not¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡know¡¡what¡¡the¡¡instance¡¡type¡¡is£»¡¡and¡¡in¡¡the¡¡case¡¡of¡¡AddRoomGrouping£¨£©£»¡¡it¡¡doesn¡¯t¡£¡¡But¡¡that¡¡is¡¡fine£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡because¡¡you£»¡¡as¡¡the¡¡user£»¡¡will¡¡consider¡¡the¡¡instance¡¡as¡¡a¡¡key¡¡that¡¡is¡¡managed¡¡by¡¡the¡¡class¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡LightingController¡£¡¡In¡¡technical¡¡jargon£»¡¡the¡¡object¡¡instance¡¡is¡¡a¡¡handle¡¡that¡¡you¡¡hold¡¡and¡¡pass¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡to¡¡some¡¡other¡¡ponent¡¡that¡¡knows¡¡what¡¡to¡¡do¡¡with¡¡it¡£¡¡In¡¡the¡¡example£»¡¡it¡¡means¡¡giving¡¡the¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡handle¡¡to¡¡¡¡LightingController¡¡because¡¡it¡¡knows¡¡that¡¡the¡¡handle¡¡is¡¡an¡¡instance¡¡of¡¡RoomGrouping¡£¡¡¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡237¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡C¡¡H¡¡AP¡¡TE¡¡R¡¡¡¡¡¡8¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡AR¡¡N¡¡IN¡¡G¡¡¡¡¡¡AB¡¡O¡¡U¡¡T¡¡¡¡¡¡CO¡¡M¡¡P¡¡O¡¡N¡¡E¡¡N¡¡T¡¡O¡¡R¡¡IE¡¡N¡¡TE¡¡D¡¡¡¡¡¡A¡¡R¡¡CH¡¡I¡¡TE¡¡C¡¡TU¡¡R¡¡E¡¡215¡¡



¡öNote¡¡¡¡Handles¡¡were¡¡very¡¡popular¡¡in¡¡the¡¡C¡¡programming¡¡days¡¡and¡¡were¡¡consider¡¡pointers¡¡to¡¡memory¡£¡¡The¡¡¡¡

caller¡¡did¡¡not¡¡know¡¡what¡¡the¡¡pointer¡¡pointed¡¡to£»¡¡but¡¡kept¡¡using¡¡it¡¡when¡¡interacting¡¡with¡¡an¡¡API¡£¡¡These¡¡days£»¡¡¡¡

handles¡¡have¡¡lost¡¡significance¡¡as¡¡we¡¡have¡¡objects£»¡¡¡¡generics£»¡¡and¡¡other¡¡programming¡¡constructs¡£¡¡However£»¡¡at¡¡¡¡

times£»¡¡handles¡¡are¡¡very¡¡useful¡£¡¡They¡¡can¡¡help¡¡you¡¡to¡¡avoid¡¡the¡¡problem¡¡of¡¡having¡¡to¡¡expose¡¡the¡¡internal¡¡state¡¡¡¡

of¡¡your¡¡API£»¡¡while¡¡not¡¡having¡¡to¡¡maintain¡¡an¡¡object¡¡hierarchy¡¡to¡¡watch¡¡which¡¡objects¡¡are¡¡being¡¡referenced¡£¡¡



Finding¡¡a¡¡Room¡¡Grouping¡¡



When¡¡a¡¡number¡¡of¡¡room¡¡groupings¡¡have¡¡been¡¡added£»¡¡you¡¡will¡¡want¡¡to¡¡find¡¡a¡¡room¡¡grouping¡¡¡¡

with¡¡a¡¡particular¡¡description¡£¡¡As¡¡room¡¡groupings¡¡are¡¡a¡¡doubly¡¡linked¡¡list£»¡¡it¡¡means¡¡needing¡¡to¡¡¡¡

iterate¡¡the¡¡list£»¡¡as¡¡follows¡¡£¨added¡¡to¡¡¡¡LightingController£©£º¡¡



¡¡¡¡¡¡¡¡Public¡¡Function¡¡FindRoomGrouping£¨ByVal¡¡description¡¡As¡¡String£©¡¡As¡¡Object¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Dim¡¡curr¡¡As¡¡RoomGrouping¡¡=¡¡_roomGroupings¡£NextItem¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Do¡¡While¡¡curr¡¡IsNot¡¡Nothing¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡If¡¡curr¡£Description¡£pareTo£¨description£©¡¡=¡¡0¡¡Then¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡curr¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡If¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡curr¡¡=¡¡TryCast£¨curr¡£NextItem£»¡¡RoomGrouping£©¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Loop¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡Nothing¡¡

¡¡¡¡¡¡¡¡End¡¡Function¡¡



¡¡¡¡¡¡¡¡¡¡In¡¡the¡¡iteration¡¡code£»¡¡the¡¡iteration¡¡is¡¡similar¡¡to¡¡the¡¡code¡¡illustrated¡¡earlier¡¡in¡¡the¡¡¡°Storing¡¡a¡¡¡¡

Collection¡¡Using¡¡a¡¡Linked¡¡List¡±¡¡section¡£¡¡The¡¡one¡¡difference¡¡is¡¡that¡¡the¡¡curr¡¡variable¡¡is¡¡of¡¡type¡¡¡¡

RoomGrouping£»¡¡and¡¡because¡¡NextItem¡¡is¡¡of¡¡type¡¡BaseLinkedListItem£»¡¡a¡¡type¡¡cast¡¡is¡¡necessary¡£¡¡¡¡

Then¡¡an¡¡iteration¡¡using¡¡a¡¡While¡¡loop¡¡is¡¡carried¡¡out£»¡¡during¡¡each¡¡iteration£»¡¡a¡¡test¡¡paring¡¡¡¡

curr¡£Description¡¡to¡¡the¡¡parameter¡¡description¡¡is¡¡made¡£¡¡If¡¡an¡¡object¡¡is¡¡found£»¡¡the¡¡handle¡¡to¡¡¡¡

the¡¡RoomGrouping¡¡is¡¡returned£»¡¡and¡¡if¡¡nothing¡¡is¡¡found£»¡¡Nothing¡¡is¡¡returned£»¡¡indicating¡¡that¡¡the¡¡¡¡

RoomGrouping¡¡could¡¡not¡¡be¡¡found¡£¡¡

¡¡¡¡¡¡¡¡¡¡This¡¡method¡¡would¡¡be¡¡used¡¡as¡¡follows£º¡¡



Dim¡¡foundHandle¡¡As¡¡Object¡¡=¡¡controller¡£FindRoomGrouping£¨¡¨description¡¨£©¡¡



¡¡¡¡¡¡¡¡¡¡Visual¡¡Basic¡¡has¡¡constructs¡¡that¡¡make¡¡it¡¡possible¡¡to¡¡convert¡¡the¡¡¡¡LightingController¡¡class¡¡¡¡

into¡¡a¡¡class¡¡that¡¡has¡¡array¡¡functionality¡£¡¡The¡¡following¡¡method¡¡in¡¡LightingController¡¡declares¡¡¡¡

array¡­like¡¡functionality£»¡¡which¡¡is¡¡called¡¡a¡¡default¡¡property¡¡



Default¡¡Public¡¡ReadOnly¡¡Property¡¡Item£¨ByVal¡¡description¡¡As¡¡String£©¡¡As¡¡Object¡¡¡¡

¡¡¡¡¡¡¡¡Get¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡FindRoomGrouping£¨description£©¡¡

¡¡¡¡¡¡¡¡End¡¡Get¡¡

End¡¡Property¡¡



¡¡¡¡¡¡¡¡¡¡A¡¡Visual¡¡Basic¡¡default¡¡property¡¡is¡¡defined¡¡like¡¡a¡¡property£»¡¡except¡¡that¡¡the¡¡property¡¡is¡¡prefixed¡¡¡¡

with¡¡a¡¡Default¡¡keyword¡£¡¡The¡¡default¡¡property¡¡is¡¡named¡¡¡¡Item¡¡by¡¡convention£»¡¡and¡¡this¡¡name¡¡is¡¡¡¡

used¡¡by¡¡all¡¡¡¡collection¡¡classes¡¡for¡¡consistency¡£¡¡The¡¡implementation¡¡of¡¡a¡¡property¡¡is¡¡just¡¡like¡¡¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡238¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

216¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡AP¡¡T¡¡E¡¡R¡¡¡¡¡¡8¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡A¡¡R¡¡N¡¡IN¡¡G
·µ»ØĿ¼ ÉÏÒ»Ò³ ÏÂÒ»Ò³ »Øµ½¶¥²¿ ÔÞ£¨0£© ²È£¨0£©
δÔĶÁÍꣿ¼ÓÈëÊéÇ©ÒѱãÏ´μÌÐøÔĶÁ£¡
ÎÂÜ°Ìáʾ£º ο´Ð¡ËµµÄͬʱ·¢±íÆÀÂÛ£¬Ëµ³ö×Ô¼ºµÄ¿´·¨ºÍÆäËüС»ï°éÃÇ·ÖÏíÒ²²»´íŶ£¡·¢±íÊéÆÀ»¹¿ÉÒÔ»ñµÃ»ý·ÖºÍ¾­Ñé½±Àø£¬ÈÏÕæдԭ´´ÊéÆÀ ±»²ÉÄÉΪ¾«ÆÀ¿ÉÒÔ»ñµÃ´óÁ¿½ð±Ò¡¢»ý·ÖºÍ¾­Ñé½±ÀøŶ£¡