ÓÑÇéÌáʾ£ºÈç¹û±¾ÍøÒ³´ò¿ªÌ«Âý»òÏÔʾ²»ÍêÕû£¬Çë³¢ÊÔÊó±êÓÒ¼ü¡°Ë¢Ð¡±±¾ÍøÒ³£¡
VB2008´ÓÈëÃŵ½¾«Í¨(PDF¸ñʽӢÎÄ°æ)-µÚ107²¿·Ö
¿ì½Ý²Ù×÷: °´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ °´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ °´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿! Èç¹û±¾ÊéûÓÐÔĶÁÍ꣬ÏëÏ´μÌÐø½Ó×ÅÔĶÁ£¬¿ÉʹÓÃÉÏ·½ "Êղص½ÎÒµÄä¯ÀÀÆ÷" ¹¦ÄÜ ºÍ "¼ÓÈëÊéÇ©" ¹¦ÄÜ£¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡two¡¡numbers¡£¡¡Rewrite¡¡the¡¡code¡¡to¡¡generate¡¡the¡¡frequency¡¡of¡¡all¡¡binations¡¡of¡¡single£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡pairs£»¡¡and¡¡triples¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡439¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
C¡¡¡¡H¡¡¡¡A¡¡¡¡P¡¡¡¡T¡¡¡¡E¡¡¡¡R¡¡¡¡¡¡¡¡¡¡1¡¡¡¡6¡¡
¡ö¡¡¡ö¡¡¡ö¡¡
Learning¡¡About¡¡Other¡¡Visual¡¡¡¡
Basic¡¡Techniques¡¡
This¡¡last¡¡chapter¡¡in¡¡the¡¡book¡¡is¡¡about¡¡tying¡¡up¡¡loose¡¡ends¡£¡¡The¡¡techniques¡¡discussed¡¡in¡¡this¡¡¡¡
chapter¡¡are¡¡those¡¡that¡¡you¡¡will¡¡use¡¡in¡¡specific¡¡situations¡£¡¡This¡¡chapter¡¡covers¡¡the¡¡following¡¡¡¡
topics£º¡¡
¡¡¡¡¡¡¡¡o¡¡¡¡How¡¡to¡¡use¡¡arithmetic¡¡operators¡¡to¡¡manipulate¡¡numbers¡¡
¡¡¡¡¡¡¡¡o¡¡¡¡How¡¡to¡¡overload¡¡operators¡¡
¡¡¡¡¡¡¡¡o¡¡¡¡When¡¡you¡¡might¡¡use¡¡the¡¡GoTo¡¡statement¡¡¡¡
¡¡¡¡¡¡¡¡o¡¡¡¡How¡¡to¡¡use¡¡¡¡generics¡¡constraints¡¡
¡¡¡¡¡¡¡¡o¡¡¡¡How¡¡to¡¡use¡¡nullable¡¡types¡¡¡¡
¡¡¡¡¡¡¡¡o¡¡¡¡How¡¡to¡¡use¡¡partial¡¡classes¡¡and¡¡methods¡¡¡¡
Operators¡¡
You¡¡have¡¡seen¡¡various¡¡operators¡¡used¡¡in¡¡examples¡¡throughout¡¡the¡¡book£»¡¡such¡¡as¡¡the¡¡assignment¡¡¡¡
operator¡¡£¨a¡¡=¡¡3£©£»¡¡and¡¡the¡¡logical¡¡operators¡¡£¨¡¡If£¨¡¡a¡¡=¡¡b£©£©¡£¡¡Visual¡¡Basic¡¡has¡¡many¡¡more¡¡arithmetic¡¡¡¡
operators¡¡that¡¡you¡¡can¡¡use¡¡to¡¡process¡¡types¡£¡¡You¡¡can¡¡also¡¡define¡¡custom¡¡operators¡£¡¡¡¡
Using¡¡Arithmetic¡¡Operators¡¡
The¡¡subtraction¡¡£¨¡¡¡£©£»¡¡multiplication¡¡£¨*£©£»¡¡and¡¡division¡¡£¨/£©¡¡operators¡¡are¡¡typically¡¡applicable¡¡to¡¡¡¡
only¡¡numeric¡¡values¡£¡¡These¡¡operators¡¡are¡¡directly¡¡parable¡¡to¡¡the¡¡mathematical¡¡operators¡¡¡¡
you¡¡learned¡¡about¡¡in¡¡elementary¡¡school¡£¡¡Let¡¯s¡¡look¡¡at¡¡what¡¡the¡¡other¡¡arithmetic¡¡operators¡¡do¡£¡¡
Addition¡¡
The¡¡addition¡¡£¨£«£©¡¡operator¡¡is¡¡used¡¡to¡¡indicate¡¡the¡¡addition¡¡of¡¡two¡¡values£»¡¡like¡¡this£º¡¡
a¡¡=¡¡c¡¡£«¡¡1¡¡
¡¡¡¡¡¡¡¡¡¡The¡¡addition¡¡has¡¡a¡¡left¡hand¡¡side¡¡and¡¡right¡hand¡¡side£»¡¡separated¡¡by¡¡the¡¡equal¡¡sign¡¡£¨=£©¡£¡¡¡¡
On¡¡the¡¡right¡hand¡¡side£»¡¡the¡¡variable¡¡c¡¡is¡¡added¡¡to¡¡¡¡1¡¡and¡¡assigned¡¡to¡¡the¡¡variable¡¡a¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡417¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡440¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
418¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡AP¡¡T¡¡E¡¡R¡¡¡¡¡¡1¡¡6¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡A¡¡R¡¡N¡¡I¡¡N¡¡G¡¡¡¡¡¡A¡¡B¡¡OU¡¡T¡¡¡¡¡¡O¡¡TH¡¡E¡¡R¡¡¡¡¡¡V¡¡IS¡¡U¡¡AL¡¡¡¡¡¡B¡¡A¡¡SI¡¡C¡¡¡¡TE¡¡C¡¡H¡¡N¡¡IQ¡¡U¡¡E¡¡S¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡The¡¡notion¡¡of¡¡a¡¡left¡hand¡¡side¡¡and¡¡a¡¡right¡hand¡¡side¡¡as¡¡two¡¡separate¡¡parts¡¡is¡¡important¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡when¡¡you¡¡consider¡¡this¡¡code£º¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡a¡¡=¡¡a¡¡£«¡¡1¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡In¡¡the¡¡example£»¡¡the¡¡variable¡¡a¡¡is¡¡added¡¡with¡¡the¡¡value¡¡1¡¡and¡¡assigned¡¡to¡¡the¡¡variable¡¡a£»¡¡but¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡these¡¡operations¡¡do¡¡not¡¡happen¡¡at¡¡the¡¡same¡¡time£»¡¡they¡¡happen¡¡sequentially¡£¡¡First£»¡¡the¡¡right
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡hand¡¡side¡¡is¡¡executed£»¡¡and¡¡then¡¡the¡¡left¡hand¡¡side¡¡is¡¡executed¡£¡¡By¡¡executing¡¡the¡¡left¡hand¡¡side£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡the¡¡existing¡¡value¡¡of¡¡the¡¡variable¡¡a¡¡is¡¡overwritten¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Let¡¯s¡¡consider¡¡another¡¡example£º¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡b¡¡=¡¡a¡¡=¡¡a¡¡£«¡¡1¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡If¡¡you¡¡were¡¡to¡¡run¡¡this¡¡code£»¡¡b¡¡would¡¡not¡¡be¡¡assigned£»¡¡because¡¡the¡¡example¡¡has¡¡mixed¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡operators£»¡¡which¡¡translates¡¡to¡¡this£º¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Dim¡¡b¡¡As¡¡Integer¡¡=¡¡CInt£¨¡£¨£¨a¡¡=¡¡£¨a¡¡£«¡¡1£©£©¡¡¡·¡¡False£©£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡The¡¡result¡¡is¡¡not¡¡what¡¡you¡¡expected£»¡¡and¡¡not¡¡even¡¡close¡¡to¡¡what¡¡you¡¡were¡¡trying¡¡to¡¡achieve¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¨and¡¡isn¡¯t¡¡even¡¡allowed¡¡with¡¡Option¡¡Strict¡¡set¡¡to¡¡On£©¡£¡¡What¡¡this¡¡illustrates¡¡is¡¡that¡¡you¡¡need¡¡to¡¡be¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡careful¡¡with¡¡operators¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Bitwise¡¡Operators¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Bitwise¡¡operators¡¡are¡¡used¡¡to¡¡access¡¡and¡¡manipulate¡¡individual¡¡bits¡¡in¡¡a¡¡whole¡¡number¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡As¡¡you¡¡learned¡¡in¡¡Chapter¡¡2£»¡¡the¡¡puter¡¡sees¡¡numbers¡¡as¡¡binary£»¡¡with¡¡only¡¡two¡¡unique¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡identifiers¡£¡¡Thus£»¡¡whole¡¡numbers¡¡could¡¡be¡¡viewed¡¡as¡¡arrays¡¡of¡¡Boolean¡¡values£»¡¡as¡¡there¡¡are¡¡only¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡two¡¡valid¡¡values£º¡¡1¡¡and¡¡0¡¡or¡¡True¡¡and¡¡¡¡False¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Let¡¯s¡¡look¡¡at¡¡example¡¡of¡¡using¡¡the¡¡bitwise¡¡operators¡£¡¡Say¡¡that¡¡you¡¡want¡¡to¡¡know¡¡whether¡¡a¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡person¡¡is¡¡tall£»¡¡wears¡¡hats£»¡¡and¡¡runs¡¡slowly¡£¡¡Using¡¡Boolean¡¡data¡¡members£»¡¡you¡¡would¡¡write¡¡the¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡following¡¡code¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Class¡¡PersonWithAttributes¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Public¡¡IsPersonTall¡¡As¡¡Boolean¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Public¡¡WearsHats¡¡As¡¡Boolean¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Public¡¡RunsSlowly¡¡As¡¡Boolean¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Class¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡In¡¡this¡¡definition£»¡¡each¡¡attribute¡¡of¡¡PersonWithAttributes¡¡is¡¡its¡¡own¡¡data¡¡member¡£¡¡Another¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡way¡¡to¡¡achieve¡¡the¡¡same¡¡effect¡¡is¡¡to¡¡consider¡¡each¡¡attribute¡¡as¡¡its¡¡own¡¡binary¡¡flag¡¡that¡¡is¡¡encoded¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡into¡¡PersonWithAttributes¡£¡¡The¡¡class¡¡would¡¡be¡¡rewritten¡¡as¡¡follows£º¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Class¡¡PersonWithAttributes¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Public¡¡Attributes¡¡As¡¡Integer¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Class¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡In¡¡the¡¡rewritten¡¡example£»¡¡the¡¡Boolean¡¡attributes¡¡are¡¡encoded¡¡into¡¡the¡¡data¡¡member¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Attributes¡¡using¡¡bitwise¡¡operators¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡To¡¡encode¡¡a¡¡flag¡¡in¡¡a¡¡number¡¡means¡¡to¡¡tweak¡¡the¡¡individual¡¡binary¡¡bits¡¡of¡¡a¡¡number¡£¡¡To¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡access¡¡the¡¡individual¡¡bits£»¡¡you¡¡need¡¡to¡¡create¡¡constant¡¡numbers¡¡that¡¡are¡¡a¡¡power¡¡of¡¡2¡£¡¡We¡¡use¡¡a¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡441¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡AP¡¡T¡¡E¡¡R¡¡¡¡¡¡1¡¡6¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡A¡¡R¡¡N¡¡I¡¡N¡¡G¡¡¡¡¡¡A¡¡B¡¡OU¡¡T¡¡¡¡¡¡O¡¡TH¡¡E¡¡R¡¡¡¡¡¡V¡¡IS¡¡U¡¡AL¡¡¡¡¡¡B¡¡A¡¡SI¡¡C¡¡¡¡T¡¡E¡¡C¡¡HN¡¡IQ¡¡U¡¡E¡¡S¡¡419¡¡
power¡¡of¡¡2¡¡convention¡¡because¡¡binary¡¡is¡¡a¡¡counting¡¡system¡¡based¡¡on¡¡the¡¡power¡¡of¡¡2¡£¡¡Thus£»¡¡the¡¡¡¡
three¡¡Boolean¡¡data¡¡members¡¡are¡¡converted¡¡to¡¡constants£º¡¡
Const¡¡isTall¡¡As¡¡Integer¡¡=¡¡1¡¡
Const¡¡wearsHats¡¡As¡¡Integer¡¡=¡¡2¡¡
Const¡¡runsSlow¡¡As¡¡Integer¡¡=¡¡4¡¡¡¡
¡¡¡¡¡¡¡¡¡¡Now¡¡you¡¡could¡¡create¡¡a¡¡person¡¡that¡¡is¡¡tall¡¡and¡¡runs¡¡slowly£»¡¡like¡¡this£º¡¡
Dim¡¡person¡¡As¡¡PersonWithAttributes¡¡=¡¡New¡¡PersonWithAttributes£¨£©¡¡
person¡£Attributes¡¡=¡¡isTall¡¡Or¡¡runsSlow¡¡
¡¡¡¡¡¡¡¡¡¡The¡¡variable¡¡person¡£Attributes¡¡is¡¡assigned¡¡the¡¡operations¡¡of¡¡isTall¡¡and¡¡runsSlow¡£¡¡So¡¡if¡¡¡¡
isTall¡¡is¡¡0001£»¡¡and¡¡runsSlow¡¡is¡¡0100£»¡¡taking¡¡the¡¡bitwise¡¡OR¡¡£¨Or£©¡¡of¡¡the¡¡two¡¡values¡¡results¡¡in¡¡0101¡£¡¡
¡¡¡¡¡¡¡¡¡¡A¡¡bitwise¡¡OR¡¡is¡¡when¡¡you¡¡pare¡¡two¡¡values£»¡¡and¡¡if¡¡either¡¡value¡¡is¡¡nonzero£»¡¡then¡¡the¡¡¡¡
answer¡¡is¡¡nonzero¡£¡¡If¡¡you¡¡were¡¡to¡¡convert¡¡the¡¡binary¡¡number¡¡into¡¡a¡¡decimal¡¡number£»¡¡you¡¡would¡¡¡¡
get¡¡the¡¡value¡¡of¡¡5¡£¡¡You¡¡could¡¡verify¡¡that¡¡the¡¡person¡¡isTall¡¡like¡¡this£º¡¡
If¡¡£¨person¡£Attributes¡¡And¡¡isTall£©¡¡¡¡0¡¡Then¡¡
¡¡¡¡¡¡¡¡Console¡£WriteLine£¨¡¨Person¡¡is¡¡tall¡¨£©¡¡
Else¡¡¡¡
¡¡¡¡¡¡¡¡Console¡£WriteLine£¨¡¨Person¡¡is¡¡not¡¡tall¡¨£©¡¡
End¡¡If¡¡
¡¡¡¡¡¡¡¡¡¡A¡¡bitwise¡¡shift¡¡is¡¡the¡¡shifting¡¡of¡¡the¡¡bits¡¡to¡¡the¡¡left¡¡or¡¡to¡¡the¡¡right¡¡by¡¡the¡¡number¡¡of¡¡places¡¡indi
cated¡¡by¡¡the¡¡shift¡£¡¡The¡¡following¡¡code¡¡demonstrates¡¡shifting¡¡the¡¡bits¡¡two¡¡places¡¡to¡¡the¡¡left¡¡£¨¡·¡¡2¡¡
¡¡¡¡¡¡¡¡¡¡The¡¡result¡¡is¡¡2£»¡¡which¡¡has¡¡the¡¡binary¡¡value¡¡10¡£¡¡
¡¡¡¡¡¡¡¡¡¡For¡¡the¡¡most¡¡part£»¡¡you¡¡probably¡¡will¡¡not¡¡use¡¡the¡¡binary¡¡shift¡¡operators¡£¡¡Unless¡¡you¡¡are¡¡dealing¡¡¡¡
with¡¡hardware¡related¡¡programming¡¡£¨such¡¡as¡¡GUI¡¡interactions£©£»¡¡whatever¡¡you¡¡can¡¡do¡¡with¡¡¡¡
flags¡¡can¡¡be¡¡replicated¡¡using¡¡a¡¡bination¡¡of¡¡Boolean¡¡types¡¡and¡¡structures¡£¡¡However£»¡¡when¡¡¡¡
you¡¡do¡¡encounter¡¡bitwise¡¡operators£»¡¡you¡¡will¡¡recognize¡¡what¡¡they¡¡are¡¡doing¡£¡¡¡¡
Modulus¡¡
The¡¡modulus¡¡operator¡¡£¨Mod£©¡¡is¡¡very¡¡useful¡¡when¡¡you¡¡want¡¡to¡¡perform¡¡division¡¡operations¡¡and¡¡¡¡
need¡¡to¡¡know¡¡how¡¡much¡¡is¡¡left¡¡over¡£¡¡For¡¡example£»¡¡the¡¡following¡¡calculation¡¡yields¡¡a¡¡value¡¡of¡¡3¡£¡¡
Dim¡¡a¡¡As¡¡Integer¡¡=¡¡17¡¡/¡¡5¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡442¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
420¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡AP¡¡T¡¡E¡¡R¡¡¡¡¡¡1¡¡6¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡A¡¡R¡¡N¡¡I¡¡N¡¡G¡¡¡¡¡¡A¡¡B¡¡OU¡¡T¡¡¡¡¡¡O¡¡TH¡¡E¡¡R¡¡¡¡¡¡V¡¡IS¡¡U¡¡AL¡¡¡¡¡¡B¡¡A¡¡SI¡¡C¡¡¡¡TE¡¡C¡¡H¡¡N¡¡IQ¡¡U¡¡E¡¡S¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Yet¡¡because¡¡it¡¡is¡¡an¡¡integer¡¡division£»¡¡you¡¡don¡¯t¡¡know¡¡if¡¡the¡¡value¡¡is¡¡evenly¡¡divided¡¡by¡¡5¡£¡¡The¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡following¡¡calculation¡¡lets¡¡you¡¡figure¡¡out¡¡the¡¡remainder¡¡for¡¡the¡¡division¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Dim¡¡remainder¡¡As¡¡Integer¡¡=¡¡17¡¡Mod¡¡5¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Increment¡¡and¡¡Decrement¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡The¡¡increment¡¡£¨£«=£©¡¡and¡¡decrement¡¡£¨¡¡¡=£©¡¡operators¡¡are¡¡useful¡¡in¡¡place¡¡of¡¡the¡¡addition¡¡and¡¡subtrac
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡tion¡¡operators¡£¡¡Visual¡¡Basic¡¡also¡¡has¡¡the¡¡*=¡¡and¡¡/=¡¡operators£»¡¡which¡¡you¡¡can¡¡use¡¡in¡¡place¡¡of¡¡the¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡multiplication¡¡and¡¡division¡¡operators¡£¡¡The¡¡idea¡¡behind¡¡these¡¡operators¡¡is¡¡to¡¡perform¡¡an¡¡operation¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡on¡¡the¡¡variable¡¡itself¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Let¡¯s¡¡say¡¡you¡¡execute¡¡this¡¡code£º¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Dim¡¡a¡¡As¡¡Integer¡¡=¡¡2¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡a¡¡£«=¡¡1¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Then¡¡after¡¡the¡¡increment¡¡operation£»¡¡the¡¡variable¡¡a¡¡will¡¡have¡¡a¡¡value¡¡of¡¡3¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Overloading¡¡Operators¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Suppose¡¡you¡¡want¡¡to¡¡implement¡¡a¡¡special¡¡type£»¡¡such¡¡as¡¡a¡¡plex¡¡number¡¡type£»¡¡and¡¡want¡¡to¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡support¡¡the¡¡£«¡¡sign¡£¡¡To¡¡do¡¡so£»¡¡you¡¡would¡¡need¡¡to¡¡implement¡¡the¡¡£«¡¡operator£»¡¡which£»¡¡in¡¡turn£»¡¡over
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡loads¡¡the¡¡£«¡¡operator¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡As¡¡an¡¡example£»¡¡let¡¯s¡¡walk¡¡through¡¡implementing¡¡the¡¡£«¡¡operator¡¡for¡¡the¡¡plex¡¡number¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡type¡£¡¡plex¡¡numbers¡¡are¡¡numbers¡¡that¡¡have¡¡two¡¡parts£º¡¡real¡¡and¡¡imaginary¡£¡¡For¡¡example£»¡¡a¡¡£«¡¡b¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡is¡¡a¡¡plex¡¡number£»¡¡where¡¡a¡¡is¡¡the¡¡real¡¡part¡¡and¡¡b¡¡is¡¡the¡¡imaginary¡¡part¡£¡¡To¡¡add¡¡a¡¡plex¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡number£»¡¡you¡¡add¡¡the¡¡real¡¡parts£»¡¡and¡¡then¡¡add¡¡the¡¡imaginary¡¡parts£»¡¡and¡¡that¡¡gives¡¡you¡¡the¡¡new¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡number¡£¡¡The¡¡following¡¡is¡¡the¡¡plex¡¡number¡¡type£»¡¡plexType£»¡¡declaration¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Public¡¡NotInheritable¡¡Class¡¡plexType¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Private¡¡ReadOnly¡¡_imaginary¡¡As¡¡Double¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Private¡¡ReadOnly¡¡_real¡¡As¡¡Double¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Public¡¡Sub¡¡New£¨ByVal¡¡real¡¡As¡¡Double£»¡¡ByVal¡¡imaginary¡¡As¡¡Double£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡_real¡¡=¡¡real¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡_imaginary¡¡=¡¡imaginary¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Sub¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Public¡¡Overrides¡¡Function¡¡ToString£¨£©¡¡As¡¡String¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡String¡£Concat£¨New¡¡Object£¨£©¡¡£û¡¨£¨¡¨£»¡¡_real£»¡¡¡¨£©¡¡£¨¡¨£»¡¡_imaginary£»¡¡¡¨£©i¡¨£ý£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Function¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Public¡¡ReadOnly¡¡Property¡¡Imaginary£¨£©¡¡As¡¡Double¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Get¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡_imaginary¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Get¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Property¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡443¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡AP¡¡T¡¡E¡¡R¡¡¡¡¡¡1¡¡6¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡A¡¡R¡¡N¡¡I¡¡N¡¡G¡¡¡¡¡¡A¡¡B¡¡OU¡¡T¡¡¡¡¡¡O¡¡TH¡¡E¡¡R¡¡¡¡¡¡V¡¡IS¡¡U¡¡AL¡¡¡¡¡¡B¡¡A¡¡SI¡¡C¡¡¡¡T¡¡E¡¡C¡¡HN¡¡IQ¡¡U¡¡E¡¡S¡¡421¡¡
¡¡¡¡¡¡¡¡Public¡¡ReadOnly¡¡Property¡¡Real£¨£©¡¡As¡¡Double¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Get¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡_real¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Get¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Set£¨ByVal¡¡value¡¡As¡¡Double£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡_real¡¡=¡¡value¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Set¡¡
¡¡¡¡¡¡¡¡End¡¡Property¡¡
End¡¡Class¡¡
¡¡¡¡¡¡¡¡¡¡plexType¡¡is¡¡an¡¡immutable¡¡type¡¡that¡¡has¡¡two¡¡data¡¡members¡¡representing¡¡the¡¡real¡¡and¡¡¡¡
imaginary¡¡number¡¡parts¡£¡¡
¡¡¡¡¡¡¡¡¡¡The¡¡goal¡¡is¡¡to¡¡define¡¡the¡¡£«¡¡operator¡¡so¡¡that¡¡the¡¡following¡¡code¡¡can¡¡be¡¡piled¡£¡¡
Dim¡¡a¡¡As¡¡plexType¡¡=¡¡New¡¡plexType£¨1¡£0£»¡¡10¡£0£©¡¡
Dim¡¡b¡¡As¡¡plexType¡¡=¡¡New¡¡plexType£¨2¡£0£»¡¡20¡£0£©¡¡
Dim¡¡c¡¡As¡¡plexType¡¡=¡¡a¡¡£«¡¡b¡¡
¡¡¡¡¡¡¡¡¡¡Overloading¡¡the¡¡£«¡¡operator¡¡means¡¡to¡¡add¡¡a¡¡method¡¡that¡¡has¡¡a¡¡special¡¡notation¡£¡¡The¡¡following¡¡¡¡
is¡¡the¡¡modified¡¡plexType¡¡type¡¡with¡¡the¡¡overloaded¡¡operator¡¡implemented¡¡£¨bolded£©¡£¡¡
Public¡¡NotInheritable¡¡Class¡¡plexType¡¡
¡¡¡¡¡¡¡¡Private¡¡ReadOnly¡¡_imaginary¡¡As¡¡Double¡¡
¡¡¡¡¡¡¡¡Private¡¡ReadOnly¡¡_real¡¡As¡¡Double¡¡
¡¡¡¡¡¡¡¡Public¡¡Sub¡¡New£¨ByVal¡¡real¡¡As¡¡Double£»¡¡
¿ì½Ý²Ù×÷: °´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ °´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ °´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿!
ÎÂÜ°Ìáʾ£º ο´Ð¡ËµµÄͬʱ·¢±íÆÀÂÛ£¬Ëµ³ö×Ô¼ºµÄ¿´·¨ºÍÆäËüС»ï°éÃÇ·ÖÏíÒ²²»´íŶ£¡·¢±íÊéÆÀ»¹¿ÉÒÔ»ñµÃ»ý·ÖºÍ¾Ñé½±Àø£¬ÈÏÕæдԴ´ÊéÆÀ ±»²ÉÄÉΪ¾«ÆÀ¿ÉÒÔ»ñµÃ´óÁ¿½ð±Ò¡¢»ý·ÖºÍ¾Ñé½±ÀøŶ£¡