ÓÑÇéÌáʾ£ºÈç¹û±¾ÍøÒ³´ò¿ªÌ«Âý»òÏÔʾ²»ÍêÕû£¬Çë³¢ÊÔÊó±êÓÒ¼ü¡°Ë¢Ð¡±±¾ÍøÒ³£¡
VB2008´ÓÈëÃŵ½¾«Í¨(PDF¸ñʽӢÎÄ°æ)-µÚ8²¿·Ö
¿ì½Ý²Ù×÷: °´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ °´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ °´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿! Èç¹û±¾ÊéûÓÐÔĶÁÍ꣬ÏëÏ´μÌÐø½Ó×ÅÔĶÁ£¬¿ÉʹÓÃÉÏ·½ "Êղص½ÎÒµÄä¯ÀÀÆ÷" ¹¦ÄÜ ºÍ "¼ÓÈëÊéÇ©" ¹¦ÄÜ£¡
12¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡AP¡¡T¡¡E¡¡R¡¡¡¡¡¡1¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡R¡¡E¡¡A¡¡DY¡¡£»¡¡¡¡¡¡ST¡¡E¡¡A¡¡DY¡¡£»¡¡¡¡¡¡G¡¡O¡¡£¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Navigating¡¡the¡¡User¡¡Controls¡¡of¡¡the¡¡Solution¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡When¡¡you¡¡are¡¡writing¡¡your¡¡code£»¡¡your¡¡most¡¡important¡¡form¡¡of¡¡navigation¡¡is¡¡the¡¡Solution¡¡Explorer¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡The¡¡Solution¡¡Explorer¡¡is¡¡the¡¡tree¡¡control¡¡that¡¡contains¡¡the¡¡references¡¡to¡¡your¡¡solutions¡¡and¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡projects¡£¡¡Consider¡¡the¡¡Solution¡¡Explorer¡¡as¡¡your¡¡developer¡¡dashboard£»¡¡which¡¡you¡¡can¡¡use¡¡to¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡fine¡tune¡¡how¡¡your¡¡¡¡application¡¡is¡¡assembled¡¡and¡¡executed¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡I¡¡suggest¡¡that¡¡you¡¡take¡¡a¡¡moment¡¡to¡¡click¡¡around¡¡the¡¡Solution¡¡Explorer¡£¡¡Try¡¡some¡¡right
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡clicks¡¡on¡¡various¡¡elements¡£¡¡The¡¡context¡sensitive¡¡click¡¡is¡¡a¡¡fast¡¡way¡¡of¡¡fine¡tuning¡¡particular¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡aspects¡¡of¡¡your¡¡solution¡¡and¡¡project¡£¡¡However£»¡¡when¡¡clicking£»¡¡please¡¡do¡¡not¡¡click¡¡OK¡¡in¡¡any¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡dialog¡¡box£»¡¡for¡¡now£»¡¡click¡¡Cancel¡¡so¡¡that¡¡any¡¡changes¡¡you¡¡may¡¡have¡¡made¡¡are¡¡not¡¡saved¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡To¡¡the¡¡right¡¡of¡¡the¡¡Solution¡¡Explorer¡¡is¡¡your¡¡work¡¡area¡£¡¡The¡¡work¡¡area¡¡is¡¡where¡¡you¡¡write¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡your¡¡code¡¡or¡¡edit¡¡your¡¡user¡¡interface¡£¡¡The¡¡work¡¡area¡¡will¡¡display¡¡only¡¡a¡¡single¡¡piece¡¡of¡¡informa
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡tion£»¡¡which¡¡could¡¡be¡¡some¡¡code£»¡¡a¡¡user¡¡interface£»¡¡or¡¡a¡¡project¡£¡¡As¡¡you¡¡saw¡¡earlier£»¡¡when¡¡you¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡double¡click¡¡Form1¡£vb¡¡in¡¡the¡¡Solution¡¡Explorer£»¡¡the¡¡work¡¡area¡¡displays¡¡the¡¡form¡¡related¡¡to¡¡the¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Form1¡£vb¡¡file¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Now¡¡that¡¡you¡¡have¡¡an¡¡idea¡¡of¡¡how¡¡the¡¡IDE¡¡works£»¡¡let¡¯s¡¡continue¡¡with¡¡our¡¡examples¡£¡¡Next¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡up¡¡is¡¡the¡¡console¡¡application¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Creating¡¡the¡¡Console¡¡Application¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡A¡¡console¡¡application¡¡is¡¡a¡¡text¡based¡¡application¡£¡¡This¡¡means¡¡that¡¡rather¡¡than¡¡displaying¡¡a¡¡GUI£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡it¡¡uses¡¡a¡¡mand¡line¡¡interface¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡The¡¡console¡¡has¡¡a¡¡very¡¡long¡¡history¡¡because¡¡the¡¡console¡¡was¡¡the¡¡first¡¡way¡¡to¡¡interact¡¡with¡¡a¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡puter¡£¡¡Consoles¡¡are¡¡not¡¡very¡¡user¡friendly¡¡and¡¡bee¡¡very¡¡tedious¡¡for¡¡any¡¡plex¡¡oper
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ations£»¡¡yet¡¡some¡¡people¡¡claim¡¡that¡¡a¡¡console¡¡is¡¡all¡¡you¡¡need¡£¡¡£¨See¡¡http£º//en¡£wikipedia¡£org/¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡wiki/mand_line_interface¡¡for¡¡more¡¡information¡¡about¡¡the¡¡console¡££©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Writing¡¡to¡¡the¡¡console¡¡works¡¡only¡¡if¡¡the¡¡currently¡¡running¡¡application¡¡has¡¡a¡¡console¡£¡¡To¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡open¡¡the¡¡console¡¡in¡¡Windows£»¡¡select¡¡Start¡¡¡¡Run¡¡and¡¡type¡¡cmd¡¡in¡¡the¡¡dialog¡¡box¡£¡¡When¡¡you¡¡test¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡a¡¡console¡¡application£»¡¡Visual¡¡Basic¡¡Express¡¡opens¡¡a¡¡console¡¡for¡¡you¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Visual¡¡Basic¡¡Express¡¡can¡¡create£»¡¡build£»¡¡and¡¡manage¡¡console¡¡applications¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Adding¡¡a¡¡Console¡¡Application¡¡Project¡¡to¡¡the¡¡Solution¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡We¡¡will¡¡now¡¡create¡¡an¡¡application¡¡that¡¡outputs¡¡the¡¡text¡¡¡°hello£»¡¡world¡±¡¡to¡¡the¡¡console¡£¡¡Follow¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡these¡¡steps¡¡to¡¡add¡¡the¡¡new¡¡project¡¡to¡¡the¡¡ThreeExamples¡¡solution£º¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡1¡£¡¡Choose¡¡File¡¡¡¡Add¡¡¡¡New¡¡Project¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡2¡£¡¡Make¡¡sure¡¡the¡¡location¡¡is¡¡the¡¡same¡¡as¡¡that¡¡of¡¡WindowsApplication¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡3¡£¡¡Select¡¡Console¡¡Application¡¡and¡¡change¡¡the¡¡name¡¡to¡¡ConsoleApplication¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡The¡¡Solution¡¡Explorer¡¡changes¡¡to¡¡show¡¡the¡¡additional¡¡project¡¡and¡¡now¡¡also¡¡shows¡¡the¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡solution¡£¡¡The¡¡work¡¡area¡¡displays¡¡the¡¡source¡¡code¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Notice¡¡the¡¡simplicity¡¡of¡¡the¡¡console¡¡application¡£¡¡It¡¡contains¡¡a¡¡single£»¡¡plain¡vanilla¡¡source¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡code¡¡file£»¡¡called¡¡Module1¡£vb¡£¡¡Console¡¡applications¡¡typically¡¡do¡¡not¡¡have¡¡any¡¡specialized¡¡group
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ings¡¡and¡¡do¡¡not¡¡have¡¡any¡¡events¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡35¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡C¡¡H¡¡AP¡¡TE¡¡R¡¡¡¡¡¡1¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡R¡¡E¡¡AD¡¡Y¡¡£»¡¡¡¡¡¡ST¡¡E¡¡AD¡¡Y¡¡£»¡¡¡¡¡¡G¡¡O£¡¡¡13¡¡
Making¡¡the¡¡Console¡¡Application¡¡Say¡¡Hello¡¡
To¡¡make¡¡the¡¡console¡¡application¡¡do¡¡something£»¡¡you¡¡need¡¡to¡¡add¡¡some¡¡source¡¡code¡¡to¡¡the¡¡¡¡
Main£¨£©¡¡method£»¡¡as¡¡follows£º¡¡
Module¡¡Module1¡¡
¡¡¡¡¡¡¡¡Sub¡¡Main£¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Console¡£WriteLine£¨¡¨hello£»¡¡world¡¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Console¡£ReadKey£¨£©¡¡
¡¡¡¡¡¡¡¡End¡¡Sub¡¡
End¡¡Module¡¡
¡¡¡¡¡¡¡¡¡¡The¡¡bolded¡¡line¡¡writes¡¡the¡¡text¡¡¡°hello£»¡¡world¡±¡¡to¡¡the¡¡console¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡If¡¡you¡¡tried¡¡to¡¡run¡¡the¡¡console¡¡application¡¡by¡¡pressing¡¡Ctrl£«F5£»¡¡you¡¡would¡¡instead¡¡cause¡¡¡¡
the¡¡Windows¡¡application£»¡¡WindowsApplication£»¡¡to¡¡run¡£¡¡Let¡¯s¡¡change¡¡that¡¡next¡£¡¡¡¡
Setting¡¡the¡¡Startup¡¡Project¡¡
To¡¡execute¡¡the¡¡console¡¡application£»¡¡you¡¡need¡¡to¡¡set¡¡the¡¡console¡¡application¡¡as¡¡the¡¡startup¡¡project¡£¡¡¡¡
Did¡¡you¡¡notice¡¡how¡¡the¡¡WindowsApplication¡¡project¡¡is¡¡in¡¡bold¡¡in¡¡the¡¡Solution¡¡Explorer£¿¡¡That¡¡¡¡
means¡¡WindowsApplication¡¡is¡¡the¡¡startup¡¡project¡£¡¡Whenever¡¡you¡¡run¡¡or¡¡debug¡¡an¡¡application£»¡¡¡¡
the¡¡startup¡¡project¡¡is¡¡executed¡¡or¡¡debugged¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡To¡¡switch¡¡the¡¡startup¡¡project¡¡to¡¡ConsoleApplication£»¡¡right¡click¡¡the¡¡ConsoleApplication¡¡¡¡
project¡¡and¡¡select¡¡Set¡¡As¡¡StartUp¡¡Project¡£¡¡ConsoleApplication¡¡will¡¡now¡¡be¡¡in¡¡bold£»¡¡meaning¡¡it¡¡is¡¡¡¡
the¡¡startup¡¡project¡¡of¡¡the¡¡ThreeExamples¡¡solution¡£¡¡
Running¡¡the¡¡Console¡¡Project¡¡
With¡¡ConsoleApplication¡¡set¡¡as¡¡the¡¡startup¡¡project£»¡¡you¡¡can¡¡now¡¡press¡¡Ctrl£«F5¡¡to¡¡run¡¡the¡¡¡¡
console¡¡application¡£¡¡The¡¡output¡¡is¡¡as¡¡follows£º¡¡
hello£»¡¡world¡¡
¡¡¡¡¡¡¡¡¡¡Executing¡¡the¡¡console¡¡application¡¡does¡¡not¡¡generate¡¡a¡¡window£»¡¡as¡¡you¡¡saw¡¡with¡¡the¡¡Windows¡¡¡¡
application¡£¡¡Instead£»¡¡a¡¡mand¡¡prompt¡¡is¡¡started¡¡with¡¡ConsoleApplication¡¡as¡¡the¡¡application¡¡¡¡
to¡¡execute¡£¡¡Executing¡¡that¡¡application¡¡generates¡¡the¡¡text¡¡¡°hello£»¡¡world¡£¡±¡¡You¡¡will¡¡also¡¡see¡¡that¡¡¡¡
you¡¡can¡¡press¡¡any¡¡key¡¡to¡¡close¡¡the¡¡mand¡¡prompt¡¡window¡£¡¡Visual¡¡Basic¡¡Express¡¡automati
cally¡¡generated¡¡the¡¡code¡¡to¡¡show¡¡this¡¡output¡¡and¡¡execute¡¡this¡¡action¡£¡¡
¡¡¡¡¡¡¡¡¡¡In¡¡general£»¡¡the¡¡console¡¡application¡¡is¡¡limited£»¡¡but¡¡it¡¯s¡¡an¡¡easy¡¡way¡¡to¡¡run¡¡specific¡¡tasks¡£¡¡¡¡
Now¡¡let¡¯s¡¡move¡¡on¡¡to¡¡the¡¡next¡¡example¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡36¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
14¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡AP¡¡T¡¡E¡¡R¡¡¡¡¡¡1¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡R¡¡E¡¡A¡¡DY¡¡£»¡¡¡¡¡¡ST¡¡E¡¡A¡¡DY¡¡£»¡¡¡¡¡¡G¡¡O¡¡£¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Creating¡¡the¡¡Class¡¡Library¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡The¡¡third¡¡example¡¡in¡¡this¡¡chapter¡¡is¡¡not¡¡a¡¡¡¡application£»¡¡rather£»¡¡it¡¡is¡¡a¡¡shareable¡¡piece¡¡of¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡functionality£»¡¡typically¡¡called¡¡a¡¡¡¡class¡¡library¡£¡¡Windows¡¡applications¡¡and¡¡console¡¡applications¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡are¡¡programs¡¡that¡¡you¡¡can¡¡execute¡¡from¡¡a¡¡mand¡¡prompt¡¡or¡¡Windows¡¡Explorer¡£¡¡A¡¡class¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡library¡¡cannot¡¡be¡¡executed¡¡by¡¡the¡¡user£»¡¡but¡¡needs¡¡to¡¡be¡¡accessed¡¡by¡¡a¡¡Windows¡¡application¡¡or¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡console¡¡application¡£¡¡It¡¡is¡¡a¡¡convenient¡¡place¡¡to¡¡put¡¡code¡¡that¡¡can¡¡be¡¡used¡¡by¡¡more¡¡than¡¡one¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡application¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Adding¡¡a¡¡Class¡¡Library¡¡Project¡¡to¡¡the¡¡Solution¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡We¡¡will¡¡now¡¡create¡¡a¡¡class¡¡library¡¡for¡¡the¡¡Windows¡¡application¡¡and¡¡console¡¡application¡¡to¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡share¡£¡¡Follow¡¡these¡¡steps¡¡to¡¡add¡¡the¡¡new¡¡project¡¡to¡¡the¡¡ThreeExamples¡¡solution£º¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡1¡£¡¡¡¡Right¡click¡¡the¡¡solution¡¡name£»¡¡ThreeExamples£»¡¡in¡¡the¡¡Solution¡¡Explorer¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡2¡£¡¡¡¡Select¡¡Add¡¡¡¡New¡¡Project¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡3¡£¡¡¡¡Select¡¡Class¡¡Library¡¡and¡¡change¡¡the¡¡name¡¡to¡¡ClassLibrary¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡The¡¡resulting¡¡solution¡¡project¡¡should¡¡look¡¡like¡¡Figure¡¡1¡8¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Figure¡¡1¡8¡£¡¡¡¡Updated¡¡solution¡¡structure¡¡that¡¡contains¡¡three¡¡projects¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡The¡¡added¡¡ClassLibrary¡¡project¡¡has¡¡a¡¡single¡¡file¡¡called¡¡Class1¡£vb£»¡¡which¡¡is¡¡a¡¡plain¡vanilla¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡source¡¡code¡¡file¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡37¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡C¡¡H¡¡AP¡¡TE¡¡R¡¡¡¡¡¡1¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡R¡¡E¡¡AD¡¡Y¡¡£»¡¡¡¡¡¡ST¡¡E¡¡AD¡¡Y¡¡£»¡¡¡¡¡¡G¡¡O£¡¡¡15¡¡
Moving¡¡Functionality¡¡
Now¡¡we¡¡will¡¡move¡¡the¡¡code¡¡used¡¡to¡¡say¡¡¡°hello£»¡¡world¡±¡¡from¡¡ConsoleApplication¡¡to¡¡¡¡
ClassLibrary¡£¡¡Add¡¡the¡¡code¡¡to¡¡Class1¡£vb¡¡as¡¡follows¡¡£¨the¡¡bolded¡¡code£©£º¡¡
Public¡¡Class¡¡Class1¡¡
¡¡¡¡¡¡¡¡Public¡¡Shared¡¡Sub¡¡HelloWorld£¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Console¡£WriteLine£¨¡¨hello£»¡¡world¡¨£©¡¡
¡¡¡¡¡¡¡¡End¡¡Sub¡¡
End¡¡Class¡¡
¡¡¡¡¡¡¡¡¡¡The¡¡modified¡¡code¡¡contains¡¡a¡¡method¡¡called¡¡HelloWorld£¨£©¡£¡¡When¡¡called£»¡¡this¡¡method¡¡will¡¡¡¡
output¡¡the¡¡text¡¡¡°hello£»¡¡world¡£¡±¡¡As¡¡mentioned¡¡earlier¡¡in¡¡the¡¡chapter£»¡¡a¡¡method¡¡is¡¡a¡¡set¡¡of¡¡instruc
tions¡¡that¡¡carry¡¡out¡¡a¡¡task¡£¡¡Methods¡¡are¡¡discussed¡¡in¡¡more¡¡detail¡¡in¡¡Chapter¡¡2¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡In¡¡order¡¡for¡¡applications¡¡to¡¡actually¡¡share¡¡the¡¡code¡¡that¡¯s¡¡in¡¡a¡¡class¡¡library£»¡¡you¡¡must¡¡make¡¡¡¡
the¡¡projects¡¡aware¡¡of¡¡each¡¡other¡¯s¡¡existence¡£¡¡You¡¡do¡¡that¡¡through¡¡references¡£¡¡
Defining¡¡References¡¡
To¡¡make¡¡one¡¡project¡¡aware¡¡of¡¡definitions¡¡in¡¡another¡¡project£»¡¡you¡¡need¡¡to¡¡define¡¡a¡¡reference¡£¡¡The¡¡¡¡
idea¡¡behind¡¡a¡¡reference¡¡is¡¡to¡¡indicate¡¡that¡¡a¡¡project¡¡knows¡¡about¡¡another¡¡piece¡¡of¡¡functionality¡£¡¡
¡öNote¡¡¡¡The¡¡project¡¡only¡¡knows¡¡about¡¡the¡¡functionality¡¡that¡¡has¡¡been¡¡declared¡¡as¡¡being¡¡public¡£¡¡Public¡¡function
ality£»¡¡or¡¡what¡¡Visual¡¡Basic¡¡programmers¡¡call¡¡public¡¡scope£»¡¡is¡¡when¡¡you¡¡declare¡¡a¡¡type¡¡with¡¡the¡¡Public¡¡keyword¡£¡¡¡¡
You¡¡will¡¡learn¡¡about¡¡public¡¡and¡¡other¡¡scopes¡¡throughout¡¡this¡¡book¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡To¡¡make¡¡ConsoleApplication¡¡aware¡¡of¡¡the¡¡functionality¡¡in¡¡the¡¡ClassLibrary¡¡project£»¡¡you¡¡¡¡
need¡¡to¡¡set¡¡a¡¡physical¡¡reference£»¡¡as¡¡follows£º¡¡
¡¡¡¡¡¡¡¡¡¡1¡£¡¡¡¡In¡¡the¡¡Solution¡¡Explorer£»¡¡click¡¡ConsoleApplication¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡2¡£¡¡¡¡Right¡click¡¡and¡¡select¡¡Add¡¡Reference¡£¡¡
¡¡¡¡¡¡¡¡¡¡3¡£¡¡¡¡Click¡¡the¡¡Projects¡¡tab¡£¡¡
¡¡¡¡¡¡¡¡¡¡4¡£¡¡¡¡Select¡¡ClassLibrary£»¡¡and¡¡then¡¡click¡¡OK¡£¡¡ClassLibrary¡¡will¡¡be¡¡added¡¡to¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ConsoleApplication¡¯s¡¡references¡£¡¡
¡¡¡¡¡¡¡¡¡¡Once¡¡the¡¡reference¡¡has¡¡been¡¡assigned£»¡¡ConsoleApplication¡¡can¡¡call¡¡the¡¡functionality¡¡in¡¡¡¡
ClassLibrary¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡To¡¡know¡¡which¡¡references¡¡your¡¡application¡¡or¡¡class¡¡library¡¡has£»¡¡you¡¡need¡¡to¡¡look¡¡in¡¡the¡¡¡¡
project¡¡settings¡£¡¡To¡¡do¡¡so£»¡¡right¡click¡¡the¡¡project¡¡name£»¡¡ConsoleApplication£»¡¡in¡¡the¡¡Solution¡¡¡¡
Explorer¡¡and¡¡select¡¡Properties¡£¡¡In¡¡the¡¡Properties¡¡window£»¡¡select¡¡the¡¡References¡¡tab£»¡¡as¡¡shown¡¡¡¡
in¡¡Figure¡¡1¡9¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡38¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
16¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡AP¡¡T¡¡E¡¡R¡¡¡¡¡¡1¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡R¡¡E¡¡A¡¡DY¡¡£»¡¡¡¡¡¡ST¡¡E¡¡A¡¡DY¡¡£»¡¡¡¡¡¡G¡¡O¡¡£¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Figure¡¡1¡9¡£¡¡References¡¡used¡¡by¡¡the¡¡Visual¡¡Basic¡¡project¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Calling¡¡Class¡¡Library¡¡Functionality¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Now¡¡we¡¡need¡¡to¡¡change¡¡ConsoleApplication¡¡so¡¡that¡¡it¡¡calls¡¡the¡¡function¡¡in¡¡ClassLibrary¡£¡¡Modify¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡the¡¡Module1¡£vb¡¡file¡¡in¡¡ConsoleApplication¡¡as¡¡follows£º¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Module¡¡Module1¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Sub¡¡Main£¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Console¡£WriteLine£¨¡¨hello£»¡¡world¡¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ClassLibrary¡£Class1¡£HelloWorld£¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Console¡£ReadKey£¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Sub¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Module¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Run¡¡ConsoleApplication¡¡by¡¡pressing¡¡Ctrl£«F5¡£¡¡A¡¡mand¡¡prompt¡¡window¡¡should¡¡appear¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡and¡¡generate¡¡the¡¡¡°hello£»¡¡world¡±¡¡text¡¡twice¡£¡¡The¡¡first¡¡¡°hello£»¡¡world¡±¡¡is¡¡generated¡¡by¡¡the¡¡code¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Console¡£WriteLine£¨£©¡£¡¡Calling¡¡the¡¡function¡¡ClassLibrary¡£Class1¡£HelloWorld£¨£©¡¡generates¡¡the¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡second¡¡¡°hello£»¡¡world¡£¡±¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡USING¡¡REFERENCE¡¡SHORTHAND¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ClassLibrary¡£Class1¡£HelloWorld£¨£©¡¡is¡¡the¡¡longhand¡¡way¡¡to¡¡use¡¡a¡¡reference¡£¡¡If¡¡we¡¡were¡¡to¡¡use¡¡long
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡hand¡¡for¡¡the¡¡Console¡£WriteLine£¨£©¡¡call£»¡¡we¡¡would¡¡write¡¡System¡£Console¡£WriteLine£¨£©£»¡¡because¡¡the¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Console¡£WriteLine£¨£©¡¡method¡¡is¡¡defined¡¡in¡¡the¡¡System¡¡reference¡£¡¡However£»¡¡Visual¡¡Basic¡¡Express¡¡includes¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡the¡¡¡¡System¡¡reference¡¡by¡¡default£»¡¡so¡¡we¡¡d
¿ì½Ý²Ù×÷: °´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ °´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ °´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿!
ÎÂÜ°Ìáʾ£º ο´Ð¡ËµµÄͬʱ·¢±íÆÀÂÛ£¬Ëµ³ö×Ô¼ºµÄ¿´·¨ºÍÆäËüС»ï°éÃÇ·ÖÏíÒ²²»´íŶ£¡·¢±íÊéÆÀ»¹¿ÉÒÔ»ñµÃ»ý·ÖºÍ¾Ñé½±Àø£¬ÈÏÕæдԴ´ÊéÆÀ ±»²ÉÄÉΪ¾«ÆÀ¿ÉÒÔ»ñµÃ´óÁ¿½ð±Ò¡¢»ý·ÖºÍ¾Ñé½±ÀøŶ£¡