ÓÑÇéÌáʾ£ºÈç¹û±¾ÍøÒ³´ò¿ªÌ«Âý»òÏÔʾ²»ÍêÕû£¬Çë³¢ÊÔÊó±êÓÒ¼ü¡°Ë¢Ð¡±±¾ÍøÒ³£¡
VB2008´ÓÈëÃŵ½¾«Í¨(PDF¸ñʽӢÎÄ°æ)-µÚ52²¿·Ö
¿ì½Ý²Ù×÷: °´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ °´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ °´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿! Èç¹û±¾ÊéûÓÐÔĶÁÍ꣬ÏëÏ´μÌÐø½Ó×ÅÔĶÁ£¬¿ÉʹÓÃÉÏ·½ "Êղص½ÎÒµÄä¯ÀÀÆ÷" ¹¦ÄÜ ºÍ "¼ÓÈëÊéÇ©" ¹¦ÄÜ£¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡IProcessor¡¡is¡¡not¡¡usable¡¡for¡¡binary¡¡streams£»¡¡so¡¡we¡¡need¡¡to¡¡implement¡¡a¡¡new¡¡interface¡¡and¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡architecture¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡öNote¡¡¡¡The¡¡examples¡¡that¡¡follow¡¡illustrate¡¡a¡¡very¡¡mon¡¡situation¡¡where¡¡an¡¡architecture¡¡worked¡¡and¡¡the¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ideas¡¡of¡¡the¡¡architecture¡¡could¡¡be¡¡applied¡¡in¡¡the¡¡new¡¡context¡£¡¡What¡¡does¡¡not¡¡work¡¡is¡¡the¡¡actual¡¡implementa
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡tion¡¡of¡¡the¡¡original¡¡architecture¡£¡¡You¡¡may¡¡be¡¡tempted¡¡to¡¡modify¡¡the¡¡working¡¡architecture¡¡so¡¡that¡¡it¡¡will¡¡work¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡with¡¡the¡¡new¡¡context¡£¡¡As¡¡much¡¡as¡¡you¡¡would¡¡like¡¡to¡¡do¡¡that£»¡¡don¡¯t¡£¡¡Often£»¡¡the¡¡abstractions¡¡you¡¡create¡¡will¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡plicate¡¡the¡¡architecture¡¡and¡¡make¡¡the¡¡resulting¡¡code¡¡more¡¡plex¡£¡¡Your¡¡challenge¡¡is¡¡to¡¡know¡¡when¡¡to¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡generalize¡¡an¡¡architecture¡¡and¡¡when¡¡to¡¡keep¡¡the¡¡ideas¡¡of¡¡an¡¡architecture¡¡but¡¡create¡¡a¡¡new¡¡implementation£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡and¡¡you¡¯ll¡¡learn¡¡this¡¡with¡¡experience¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Defining¡¡the¡¡Interfaces¡¡and¡¡Implementing¡¡the¡¡Shell¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡In¡¡£»¡¡the¡¡data¡¡streams¡¡are¡¡split¡¡into¡¡two¡¡types¡¡of¡¡streams£º¡¡binary¡¡and¡¡text¡£¡¡The¡¡TextWriter¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡and¡¡TextReader¡¡types¡¡are¡¡used¡¡to¡¡read¡¡text¡based¡¡data¡¡streams¡£¡¡As¡¡was¡¡demonstrated¡¡with¡¡the¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡StringReader¡¡type£»¡¡when¡¡dealing¡¡with¡¡text¡based¡¡streams£»¡¡certain¡¡assumptions¡¡can¡¡be¡¡made£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡such¡¡as¡¡being¡¡able¡¡to¡¡find¡¡new¡¡lines¡¡in¡¡the¡¡stream¡£¡¡With¡¡binary¡¡data¡¡streams£»¡¡no¡¡such¡¡assump
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡tions¡¡can¡¡be¡¡made¡£¡¡Binary¡¡streams¡¡have¡¡their¡¡own¡¡format£»¡¡which¡¡is¡¡known¡¡by¡¡only¡¡the¡¡program¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡doing¡¡the¡¡reading¡¡or¡¡writing¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡The¡¡binary¡¡stream¡based¡¡types¡¡can¡¡be¡¡used¡¡to¡¡process¡¡text¡¡data¡¡streams£»¡¡but¡¡doing¡¡so¡¡would¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡require¡¡knowing¡¡the¡¡details¡¡of¡¡the¡¡data¡¡stream¡£¡¡Remember¡¡that¡¡¡¡gives¡¡you¡¡a¡¡text¡handling¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡system¡¡that¡¡understands¡¡the¡¡different¡¡Unicode¡¡code¡¡pages¡£¡¡A¡¡Unicode¡¡code¡¡page¡¡is¡¡a¡¡specific¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡translation¡¡map¡£¡¡If¡¡you¡¡decide¡¡to¡¡manipulate¡¡the¡¡text¡¡streams¡¡using¡¡binary¡¡stream¡¡types£»¡¡you¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡are¡¡telling¡¡¡¡that¡¡you¡¡will¡¡manage¡¡the¡¡details¡¡of¡¡the¡¡Unicode¡¡code¡¡pages¡£¡¡Of¡¡course£»¡¡you¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡don¡¯t¡¡want¡¡to¡¡do¡¡that£»¡¡and¡¡thus¡¡should¡¡never¡¡mix¡¡data¡¡streams¡£¡¡So£»¡¡for¡¡our¡¡sample¡¡application£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡we¡¡need¡¡to¡¡design¡¡two¡¡different¡¡interfaces£º¡¡one¡¡to¡¡stream¡¡from¡¡text¡¡to¡¡binary¡¡and¡¡one¡¡to¡¡stream¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡from¡¡binary¡¡to¡¡text¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡öNote¡¡¡¡For¡¡more¡¡information¡¡about¡¡Unicode¡¡and¡¡other¡¡text¡related¡¡issues£»¡¡see¡¡the¡¡MSDN¡¡¡°International¡¡Text¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Display¡±¡¡section¡¡£¨http£º//msdn2¡£microsoft¡£/en¡us/library/ms776131¡£aspx£©¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡The¡¡following¡¡is¡¡the¡¡binary¡to¡text¡¡data¡¡stream¡¡interface£»¡¡Binary2Text¡£IBinary2TextProcessor¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Imports¡¡System¡£IO¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Public¡¡Interface¡¡IBinary2TextProcessor¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Sub¡¡Process£¨ByVal¡¡input¡¡As¡¡Stream£»¡¡ByVal¡¡output¡¡As¡¡TextWriter£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Interface¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡293¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡A¡¡PT¡¡E¡¡R¡¡¡¡¡¡1¡¡0¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡A¡¡R¡¡N¡¡I¡¡N¡¡G¡¡¡¡¡¡A¡¡B¡¡O¡¡U¡¡T¡¡¡¡P¡¡E¡¡R¡¡S¡¡IS¡¡T¡¡E¡¡N¡¡CE¡¡271¡¡
¡¡¡¡¡¡¡¡¡¡The¡¡IBinary2TextProcessor¡¡interface¡¡has¡¡a¡¡single¡¡method£»¡¡Process£¨£©£»¡¡which¡¡has¡¡two¡¡param
eters£º¡¡the¡¡binary¡¡stream¡¡and¡¡the¡¡text¡¡stream¡£¡¡The¡¡implementation¡¡of¡¡IBinary2TextProcessor¡¡¡¡
would¡¡be¡¡responsible¡¡for¡¡reading¡¡the¡¡data¡¡from¡¡the¡¡binary¡¡stream¡¡and¡¡saving¡¡data¡¡to¡¡the¡¡¡¡
text¡¡stream¡£¡¡
¡¡¡¡¡¡¡¡¡¡The¡¡text¡to¡binary¡¡interface£»¡¡IText2BinaryProcessor£»¡¡follows¡¡a¡¡similar¡¡interface¡¡design£»¡¡¡¡
except¡¡that¡¡the¡¡input¡¡and¡¡output¡¡stream¡¡types¡¡are¡¡reversed¡£¡¡¡¡
Imports¡¡System¡£IO¡¡
Public¡¡Interface¡¡IText2BinaryProcessor¡¡
¡¡¡¡¡¡¡¡Sub¡¡Process£¨ByVal¡¡input¡¡As¡¡TextReader£»¡¡ByVal¡¡output¡¡As¡¡Stream£©¡¡
End¡¡Interface¡¡
¡¡¡¡¡¡¡¡¡¡The¡¡idea¡¡of¡¡both¡¡interface¡¡declarations¡¡is¡¡to¡¡focus¡¡on¡¡transferring¡¡data¡¡from¡¡one¡¡stream¡¡¡¡
to¡¡another¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡The¡¡shell¡¡for¡¡both¡¡data¡¡stream¡¡interfaces¡¡is¡¡very¡¡similar¡¡to¡¡the¡¡shell¡¡of¡¡the¡¡text¡processing¡¡¡¡
stream£»¡¡except¡¡that¡¡binary¡¡and¡¡text¡¡streams¡¡are¡¡involved¡£¡¡The¡¡TextProcessor¡¡shell¡¡was¡¡respon
sible¡¡for¡¡knowing¡¡if¡¡the¡¡data¡¡stream¡¡was¡¡from¡¡the¡¡console¡¡or¡¡from¡¡a¡¡file¡£¡¡When¡¡manipulating¡¡¡¡
binary¡¡streams£»¡¡the¡¡source¡¡still¡¡needs¡¡to¡¡be¡¡ascertained£»¡¡but¡¡instead¡¡of¡¡creating¡¡text¡¡streams£»¡¡¡¡
binary¡¡streams¡¡are¡¡created¡£¡¡If¡¡you¡¡understand¡¡the¡¡mechanics¡¡of¡¡using¡¡a¡¡text¡¡stream£»¡¡you¡¡will¡¡¡¡
understand¡¡the¡¡mechanics¡¡of¡¡using¡¡a¡¡binary¡¡stream¡£¡¡
¡¡¡¡¡¡¡¡¡¡The¡¡following¡¡is¡¡the¡¡plete¡¡implementation¡¡of¡¡the¡¡text¡to¡binary¡¡bootstrap¡¡class¡£¡¡
Imports¡¡System¡£IO¡¡
Public¡¡Module¡¡Text2BinaryBootstrap¡¡
¡¡¡¡¡¡¡¡Public¡¡Sub¡¡DisplayHelp£¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Console¡£WriteLine£¨¡¨You¡¡need¡¡help£¿¡¡Right¡¡now£¿¡¨£©¡¡
¡¡¡¡¡¡¡¡End¡¡Sub¡¡
¡¡¡¡¡¡¡¡Public¡¡Sub¡¡Start£¨ByVal¡¡args¡¡As¡¡String£¨£©£»¡¡_¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ByVal¡¡processor¡¡As¡¡IText2BinaryProcessor£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡#If¡¡DEBUG_OUTPUT¡¡Then¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Console¡£WriteLine£¨¡¨Argument¡¡count£¨¡¨¡¡&¡¡args¡£Length¡¡&¡¡¡¨£©¡¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡For¡¡Each¡¡argument¡¡As¡¡String¡¡In¡¡args¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Console¡£WriteLine£¨¡¨Argument¡¡£¨¡¨¡¡&¡¡argument¡¡&¡¡¡¨£©¡¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Next¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡#End¡¡If¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Dim¡¡reader¡¡As¡¡TextReader¡¡=¡¡Nothing¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Dim¡¡writer¡¡As¡¡Stream¡¡=¡¡Nothing¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡If¡¡args¡£Length¡¡=¡¡0¡¡Then¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡reader¡¡=¡¡Console¡£In¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡writer¡¡=¡¡Console¡£OpenStandardOutput£¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ElseIf¡¡args¡£Length¡¡=¡¡1¡¡Then¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡If¡¡args£¨0£©¡¡=¡¡¡¨¡help¡¨¡¡Then¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Text2BinaryBootstrap¡£DisplayHelp£¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡If¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡294¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
272¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡AP¡¡T¡¡E¡¡R¡¡¡¡¡¡1¡¡0¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡A¡¡R¡¡N¡¡I¡¡N¡¡G¡¡¡¡¡¡A¡¡B¡¡OU¡¡T¡¡¡¡¡¡P¡¡E¡¡R¡¡S¡¡IS¡¡TE¡¡N¡¡CE¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡reader¡¡=¡¡File¡£OpenText£¨args£¨0£©£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡writer¡¡=¡¡Console¡£OpenStandardOutput£¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ElseIf¡¡args¡£Length¡¡=¡¡2¡¡Then¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡If¡¡args£¨0£©¡¡¡¡¡¨¡out¡¨¡¡Then¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Text2BinaryBootstrap¡£DisplayHelp£¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡If¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡reader¡¡=¡¡Console¡£In¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡writer¡¡=¡¡File¡£Open£¨args£¨1£©£»¡¡FileMode¡£Create£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ElseIf¡¡args¡£Length¡¡=¡¡3¡¡Then¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡If¡¡args£¨0£©¡¡¡¡¡¨¡out¡¨¡¡Then¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Text2BinaryBootstrap¡£DisplayHelp£¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡If¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡reader¡¡=¡¡File¡£OpenText£¨args£¨2£©£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡writer¡¡=¡¡File¡£Open£¨args£¨1£©£»¡¡FileMode¡£Create£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Else¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Text2BinaryBootstrap¡£DisplayHelp£¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡If¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡processor¡£Process£¨reader£»¡¡writer£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡writer¡£Close£¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Sub¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Module¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡The¡¡implementation¡¡is¡¡nearly¡¡identical¡¡to¡¡the¡¡Bootstrap¡¡class£»¡¡the¡¡differences¡¡are¡¡bolded¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Notice¡¡that¡¡instead¡¡of¡¡using¡¡the¡¡predefined¡¡Console¡£Out¡¡data¡¡member£»¡¡the¡¡OpenStandardOutput£¨£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡method¡¡is¡¡called£»¡¡and¡¡instead¡¡of¡¡¡¡File¡£CreateText£¨£©£»¡¡the¡¡File¡£Open£¨£©¡¡method¡¡is¡¡called¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡The¡¡implementation¡¡of¡¡the¡¡binary¡to¡text¡¡stream¡¡shell¡¡is¡¡nearly¡¡identical¡¡to¡¡the¡¡one¡¡for¡¡the¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡text¡to¡binary¡¡stream¡¡shell¡£¡¡You¡¡can¡¡find¡¡it¡¡in¡¡this¡¡book¡¯s¡¡downloadable¡¡source¡¡code¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Defining¡¡the¡¡Type¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡The¡¡central¡¡piece¡¡when¡¡converting¡¡from¡¡a¡¡text¡¡stream¡¡to¡¡a¡¡binary¡¡stream¡¡or¡¡vice¡¡versa¡¡is¡¡the¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡definition¡¡of¡¡a¡¡type¡£¡¡The¡¡type¡¡might¡¡be¡¡a¡¡class¡¡or¡¡a¡¡struct£»¡¡and¡¡it¡¡is¡¡identified¡¡as¡¡being¡¡a¡¡type¡¡that¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡can¡¡be¡¡read¡¡and¡¡written¡£¡¡Identifying¡¡a¡¡type¡¡to¡¡be¡¡read¡¡and¡¡written¡¡is¡¡necessary¡¡so¡¡that¡¡when¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡reads¡¡or¡¡writes¡¡the¡¡type£»¡¡the¡¡underlying¡¡infrastructure¡¡knows¡¡what¡¡to¡¡do¡£¡¡Remember¡¡that¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡a¡¡binary¡¡data¡¡stream¡¡is¡¡a¡¡data¡¡stream¡¡where¡¡only¡¡the¡¡program¡¡knows¡¡what¡¡it¡¡means¡£¡¡To¡¡help¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡read¡¡and¡¡write¡¡those¡¡types£»¡¡you¡¡add¡¡identifiers¡¡that¡¡tell¡¡¡¡what¡¡to¡¡do¡£¡¡Fortunately£»¡¡you¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡don¡¯t¡¡need¡¡to¡¡know¡¡the¡¡inner¡¡details¡¡of¡¡binary¡¡serialization£»¡¡but¡¡just¡¡give¡¡¡¡an¡¡indication¡¡of¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡how¡¡to¡¡manage¡¡it¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡For¡¡the¡¡lottery¡prediction¡¡example£»¡¡we¡¡will¡¡define¡¡a¡¡type¡¡that¡¡represents¡¡a¡¡lottery¡¡ticket¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡The¡¡lottery¡¡ticket¡¡will¡¡contain¡¡the¡¡draw¡¡date£»¡¡numbers£»¡¡and¡¡bonus¡¡number¡£¡¡Following¡¡is¡¡the¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡plete¡¡declaration¡¡£¨in¡¡the¡¡¡¡LottoLibrary¡¡project£©¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡295¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡A¡¡PT¡¡E¡¡R¡¡¡¡¡¡1¡¡0¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡A¡¡R¡¡N¡¡I¡¡N¡¡G¡¡¡¡¡¡A¡¡B¡¡O¡¡U¡¡T¡¡¡¡P¡¡E¡¡R¡¡S¡¡IS¡¡T¡¡E¡¡N¡¡CE¡¡273¡¡
¡¡_¡¡
Public¡¡Class¡¡Ticket¡¡
¡¡¡¡¡¡¡¡Public¡¡Sub¡¡New£¨£©¡¡
¡¡¡¡¡¡¡¡End¡¡Sub¡¡
¡¡¡¡¡¡¡¡Public¡¡Sub¡¡New£¨ByVal¡¡drawDate¡¡As¡¡DateTime£»¡¡ByVal¡¡numbers¡¡As¡¡Integer£¨£©£»¡¡_¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ByVal¡¡bonus¡¡As¡¡Integer£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡_drawDate¡¡=¡¡drawDate¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡_numbers¡¡=¡¡numbers¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡_bonus¡¡=¡¡bonus¡¡
¡¡¡¡¡¡¡¡End¡¡Sub¡¡
¡¡¡¡¡¡¡¡Public¡¡Property¡¡Bonus£¨£©¡¡As¡¡Integer¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Get¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡_bonus¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Get¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Set£¨ByVal¡¡value¡¡As¡¡Integer£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡_bonus¡¡=¡¡value¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Set¡¡
¡¡¡¡¡¡¡¡End¡¡Property¡¡
¡¡¡¡¡¡¡¡Public¡¡Property¡¡DrawDate£¨£©¡¡As¡¡DateTime¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Get¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡_drawDate¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Get¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Set£¨ByVal¡¡value¡¡As¡¡DateTime£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡_drawDate¡¡=¡¡value¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Set¡¡
¡¡¡¡¡¡¡¡End¡¡Property¡¡
¡¡¡¡¡¡¡¡Public¡¡Property¡¡Numbers£¨£©¡¡As¡¡Integer£¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Get¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡_numbers¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Get¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Set£¨ByVal¡¡value¡¡As¡¡Integer£¨£©£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡_numbers¡¡=¡¡value¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Set¡¡
¡¡¡¡¡¡¡¡End¡¡Property¡¡
¡¡¡¡¡¡¡¡Private¡¡_bonus¡¡As¡¡Integer¡¡
¡¡¡¡¡¡¡¡Private¡¡_drawDate¡¡As¡¡DateTime¡¡
¡¡¡¡¡¡¡¡Private¡¡_numbers¡¡As¡¡Integer£¨£©¡¡
End¡¡Class¡¡
¡¡¡¡¡¡¡¡¡¡Ticket¡¡is¡¡plain¡vanilla¡¡data¡¡class¡£¡¡However£»¡¡the¡¡bolded¡¡parts¡¡deserve¡¡an¡¡explanation¡£¡¡The¡¡¡¡
first¡¡bolded¡¡part¡¡is¡¡a¡¡set¡¡of¡¡angled¡¡brackets¡¡surrounding¡¡the¡¡identifier¡¡Serializable£»¡¡which¡¡¡¡
represents¡¡a¡¡¡¡attribute¡£¡¡In¡¡£»¡¡you¡¡have¡¡the¡¡ability¡¡to¡¡describe¡¡types£»¡¡methods£»¡¡and¡¡so¡¡on¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡296¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
274¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡AP¡¡T¡¡E¡¡R¡¡¡¡¡¡1¡¡0¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡A¡¡R¡¡N¡¡I¡¡N¡¡G¡¡¡¡¡¡A¡¡B¡¡OU¡¡T¡¡¡¡¡¡P¡¡E¡¡R¡¡S¡¡IS¡¡TE¡¡N¡¡CE¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Attributes¡¡are¡¡descriptions¡¡that¡¡are¡¡used¡¡in¡¡a¡¡particular¡¡context¡£¡¡As¡¡opposed¡¡to¡¡the¡¡identifiers¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Public¡¡and¡¡MustInherit£»¡¡which¡¡are¡¡descriptions¡¡that¡¡fundamentally¡¡describe¡¡how¡¡a¡¡type¡¡will¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡behave£»¡¡the¡¡Serializable¡¡attribute¡¡describes¡¡the¡¡behavior¡¡of¡¡a¡¡type¡¡in¡¡a¡¡specific¡¡context¡ªwhen¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡the¡¡object¡¡is¡¡to¡¡be¡¡converted¡¡from¡¡memory¡¡to¡¡a¡¡data¡¡stream¡¡and¡¡vice¡¡versa¡£¡¡Fundamental¡¡descrip
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡tions¡¡are¡¡important¡¡to¡¡the¡¡¡¡runtime£»¡¡whereas¡¡¡¡attributes¡¡are¡¡generally¡¡not¡¡important¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡to¡¡the¡¡runtime£»¡¡but¡¡important¡¡to¡¡libraries¡¡that¡¡the¡¡runtime¡¡will¡¡execute¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡öNote¡¡¡¡Serialization¡¡is¡¡the¡¡process¡¡of¡¡turning¡¡an¡¡object¡¡into¡¡a¡¡format¡¡that¡¡can¡¡be¡¡saved¡¡or¡¡sent¡¡over¡¡the¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡network¡£¡¡Deserialization¡¡is¡¡the¡¡process¡¡of¡¡retrieving¡¡the¡¡serialized¡¡object¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡The¡¡Serializable¡¡attribute¡¡describes¡¡the¡¡ability¡¡to¡¡serialize¡¡the¡¡type¡¡as¡¡it¡¡is¡¡declared¡£¡¡When¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ticket¡¡is¡¡converted¡¡into¡¡a¡¡binary¡¡stream£»¡¡the¡¡programmer¡¡does¡¡not¡¡need¡¡to¡¡do¡¡anything¡¡other¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡than¡¡pass¡¡an¡¡instance¡¡to¡¡the¡¡data¡¡stream¡£¡¡The¡¡data¡¡stream¡¡libraries¡¡handle¡¡all¡¡of¡¡the¡¡other¡¡details¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡In¡¡the¡¡declaration¡¡of¡¡Ticket£»¡¡the¡¡parameterless¡¡constructor¡¡has¡¡been¡¡bolded¡¡to¡¡emphasize¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡that¡¡this¡¡type¡¡of¡¡constructor¡¡is¡¡necessary¡¡when¡¡converting¡¡a¡¡data¡¡stream¡¡into¡¡an¡¡object¡¡instance¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡When¡¡binary¡¡streams¡¡restore¡¡types£»¡¡they¡¡instantiate¡¡an¡¡empty¡¡object¡¡and¡¡then¡¡assign¡¡the¡¡data¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡members¡£¡¡Thus£»¡¡when¡¡an¡¡object¡¡is¡¡created£»¡¡a¡¡parameterless¡¡constructor¡¡is¡¡needed¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Converting¡¡a¡¡Text¡¡Stream¡¡into¡¡a¡¡Binary¡¡Stream¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡To¡¡convert¡¡the¡¡stream¡¡from¡¡text¡¡to¡¡binary¡¡involves¡¡breaking¡¡apart¡¡the¡¡text¡¡stream£»¡¡instantiating¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡a¡¡Ticket¡¡instance£»¡¡assigning¡¡the¡¡data¡¡members£»¡¡and¡¡saving¡¡the¡¡instance¡¡to¡¡the¡¡binary¡¡stream¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡All¡¡of¡¡these¡¡steps¡¡are¡¡performed¡¡in¡¡the¡¡following¡¡source¡¡code¡¡£¨you¡¯ll¡¡need¡¡a¡¡reference¡¡to¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡LottoLibrary¡¡in¡¡Text2Binary£©¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Imports¡¡System¡£IO¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Imports¡¡System¡£Runtime¡£Serialization¡£Formatters¡£Binary¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Imports¡¡System¡£Text¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Public¡¡Class¡¡LottoTicketProcessor¡¡£º¡¡Implements¡¡IText2BinaryProcessor¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Public¡¡Sub¡¡Process£¨ByVal¡¡reader¡¡As¡¡TextReader£»¡¡ByVal¡¡writer¡¡As¡¡Stream£©¡¡_¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Implements¡¡IText2BinaryProcessor¡£Process¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Dim¡¡retval¡¡As¡¡StringBuilder¡¡=¡¡New¡¡StringBuilder£¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Do¡¡While¡¡reader¡£Peek£¨£©¡¡¡¡¡1¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Dim¡¡lineOfText¡¡As¡¡String¡¡=¡¡reader¡£ReadLine£¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Dim¡¡splitUpText¡¡As¡¡String£¨£©=¡¡lineOfText¡£Split£¨New¡¡Char£¨£©¡¡£û¡¨¡¡¡¨c£ý£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Dim¡¡dateSplit¡¡As¡¡String£¨£©¡¡=¡¡splitUpText£¨0£©¡£Split£¨New¡¡Char£¨£©¡¡£û¡¨¡£¡¨c£ý£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Dim¡¡ticket¡¡As¡¡LottoLibrary¡£Ticket¡¡=¡¡_¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡New¡¡LottoLibrary¡£Ticket£¨¡¡_¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡New¡¡DateTime£¨¡¡_¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Integer¡£Parse£¨dateSplit£¨0£©£©£»¡¡_¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Integer¡£Parse£¨dateSplit£¨1£©£©£»¡¡_¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Integer¡£Parse£¨dateSplit£¨2£©£©£©£»¡¡_¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡297¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡A¡¡PT¡¡E¡¡R¡¡¡¡¡¡1¡¡0¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡A¡¡R¡¡N¡¡I¡¡N¡¡G¡¡¡¡¡¡A¡¡B¡¡O¡¡U¡¡T¡¡¡¡P¡¡E¡¡R¡¡S¡¡IS¡¡T¡¡E¡¡N¡¡CE¡¡275¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡New¡¡Integer£¨£©¡¡£û¡¡_¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Integer¡£Parse£¨splitUpText£¨1£©£©£»¡¡_¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Integer¡£Parse£¨splitUpText£¨2£©£©£»¡¡_¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Integer¡£Parse£¨splitUpText£¨3£©£©£»¡¡_¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Integer¡£Parse£¨splitUpText£¨4£©£©£»¡¡_¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Integer¡£Parse£¨splitUpText£¨5£©£©£»¡¡_¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Integer¡£Parse£¨splitUpText£¨6£©£©¡¡£ý£»¡¡_¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Integer¡£Parse£¨splitUpText£¨7£©£©£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Dim¡¡formatter¡¡As¡¡BinaryFormatter¡¡=¡¡New¡¡BinaryFormatter£¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡formatter¡£Serialize£¨writer£»¡¡ticket£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Loop¡¡
¡¡¡¡¡¡¡¡End¡¡Sub¡¡
End¡¡Class¡¡
¡¡¡¡¡¡¡¡¡¡The¡¡code¡¡splits¡¡the¡¡text¡¡stream¡¡by¡¡reading¡¡a¡¡line¡¡of¡¡text¡¡and¡¡then¡¡splitting¡¡apart¡¡the¡¡fields¡£¡¡¡¡
The¡¡split¡apart¡¡fields¡¡are¡¡then¡¡converted¡¡into¡¡numbers¡¡by¡¡using¡¡the¡¡¡¡Integer¡£Parse£¨£©¡¡method¡£¡¡¡¡
This¡¡process¡¡of¡¡splitting¡¡and¡¡conversion¡¡is¡¡called¡¡marshaling¡¡data¡£¡¡Marshaling¡¡is¡¡a¡¡technical¡¡¡¡
term¡¡that¡¡means¡¡to¡¡convert¡¡a¡¡type¡¡from¡¡one¡¡medium¡¡to¡¡another¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡We¡¡manage¡¡the¡¡text¡¡marshaling£»¡¡but¡¡¡¡manages¡¡the¡¡binary¡¡marshaling£»¡¡which¡¡is¡¡still¡¡there¡¡¡¡
behind¡¡the¡¡scenes¡£¡¡The¡¡System¡£Runtime¡£Serialization¡£Formatters¡£Binary¡£BinaryFormatter¡¡type¡¡¡¡
manages¡¡marshaling¡¡of¡¡the¡¡Ticket¡¡instance¡¡to¡¡the¡¡binary¡¡stream¡£¡¡The¡¡¡¡Serializable¡¡attribute¡¡¡¡
is¡¡used¡¡by¡¡the¡¡BinaryFormatter¡¡as¡¡an¡¡indicator¡¡that¡¡the¡¡Ticket¡¡type¡¡is¡¡allowed¡¡to¡¡be¡¡serialized¡¡and¡¡¡¡
deserialized¡£¡¡In¡¡essence£»¡¡converting¡¡from¡¡a¡¡text¡¡stream¡¡to¡¡a¡¡binary¡¡stream¡¡means¡¡to¡¡marshal¡¡a¡¡¡¡
text¡defined¡¡ticket¡¡into¡¡a¡¡¡defined¡¡ticket£»¡¡and¡¡that¡¡is¡¡then¡¡marshaled¡¡into¡¡a¡¡binary¡defined¡¡¡¡
ticket¡£¡¡¡¡
Converting¡¡a¡¡Binary¡¡Stream¡¡into¡¡a¡¡Text¡¡Stream¡¡
Converting¡¡a¡¡binary¡¡stream¡¡into¡¡a¡¡text¡¡stream¡¡involves¡¡using¡¡the¡¡¡provided¡¡formatter¡¡to¡¡¡¡
c
¿ì½Ý²Ù×÷: °´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ °´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ °´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿!
ÎÂÜ°Ìáʾ£º ο´Ð¡ËµµÄͬʱ·¢±íÆÀÂÛ£¬Ëµ³ö×Ô¼ºµÄ¿´·¨ºÍÆäËüС»ï°éÃÇ·ÖÏíÒ²²»´íŶ£¡·¢±íÊéÆÀ»¹¿ÉÒÔ»ñµÃ»ý·ÖºÍ¾Ñé½±Àø£¬ÈÏÕæдԴ´ÊéÆÀ ±»²ÉÄÉΪ¾«ÆÀ¿ÉÒÔ»ñµÃ´óÁ¿½ð±Ò¡¢»ý·ÖºÍ¾Ñé½±ÀøŶ£¡