4. °Ñ ¼Æ
¥»³¹ªº«ÂI¥]¬A¨ã¦W¤Þ¼Æ¡]Named Argument¡^¡B¿ï¾Ü©Ê°Ñ¼Æ¥H¤Î°Ñ¼Æªº¸ê®Æ«¬§Oµ¥½ÒÃD¡C
ª`·N¡G
¦b¥»³¹¤¤¡A§Ú̥Τ޼ơ]Argument¡^¥Nªín¶Çµ¹µ{§Çªº±`¼Æ¡BÅܼƩιBºâ¦¡¡A¥Î°Ñ¼Æ¡]Parameter¡^¨Ó¥Nªí¦bµ{§Ç¤¤ªº§½³¡ÅܼơA³o¨Ç§½³¡ÅܼƥDn¥Î¨Ó±µ¦¬¤Þ¼Æ¶Ç¨ÓªºÈ¡C
¦p¦ó¨Ï¥Î¨ã¦W¤Þ¼Æ¡H
¡@
¦bVisual Basic ¡]¨Æ¹ê¤W¥i¥H»¡¦b¤j³¡¤À»y¨¥¡^¡A³Ì±`¨£ªº¤Þ¼Æ¨Ï¥Î¤è¦¡¬O«ö·Ó¬J©wªº¤Þ¼Æ¦ì¸m¨Ó±Æ¦C¤Þ¼Æªº¶¶§Ç¡AÅý³Q©I¥sªºµ{§Ç¨Ì¾Ú¤Þ¼Æªº¬Û¹ï¦ì¸m¤@¤@¥H¨ú±o¶Ç¨ÓªºÈ¡C¦pªG¬YÓµ{§Ç¨Ì§Ç»Ýn¤TӰѼÆsngRed¡BsngGreen¡BsngBlue¡A¨º»ò¨C¦¸©I¥s³oÓµ{§Ç®É¡A¤@©wn¶Ç¤J¤TӤ޼ơAµ{§Ç·|§â²Ä¤@Ó¤Þ¼ÆÈ¦s¤JsngRed¡A²Ä¤GÓ¤Þ¼ÆÈ¦s¤JsngGreen¡A²Ä¤TÓ¤Þ¼ÆÈ¦s¤JsngBlue¡C
¤U±ªº¨Ò¤l«h¤£¬O¥Î³oºØ¤è¦¡¨Ï¥Î¤Þ¼Æ¡C§Ú̧â¨ã¦W¤Þ¼Æ¡]Named Argument¡^¶Çµ¹³Q©I¥sªºµ{§Ç¡A³o¸Ìªº¤Þ¼Æ¶¶§Ç©M«e±ªº¤Þ¼Æ¶¶§Ç¤£¤@¼Ë¡C
Option Explicit
Private Sub FormColor(sngRed As Single, sngGreen As Single, _
sngBlue As Single)
BackColor = RGB(sngRed * 256, sngGreen * 256, sngBlue * 256)
End Sub
Private Sub Form_Click()
FormColor sngBlue:=0, sngGreen:=0.5, sngRed:=1 'Brown
End Sub
¨ã¦W¤Þ¼Æ³Ì¤jªº¥Î³B¨Ã¤£¬OÅý§Ú̦b¶Ç»¼¤Þ¼Æ®É¥i¥H¥ô·N§ïÅܤ޼ƪº¦ì¸m¡A¦Ó¬O¥i¥HÅý§ÚÌ¥u¶Ç¤Þ¼Æ¦C¤¤ªº¬Y´XӤ޼ơA¦Ó¬Ù²¤±¼¨ä¥Lªº¤Þ¼Æ¡C·íµ{§Çªº¤Þ¼Æ¦C«Üªøªº®ÉÔ¡A³oÓ¯S©Ê·|Åã±o¯S§O¦³¥Î¡A¦ýn¹B¥Î³oÓ¯S©Ê¡A§ÚÌ¥²¶·¦bµ{§Ç©w¸qªº³¡¥÷§â¬Y¨Ç©Î¥þ³¡°Ñ¼Æ«Å§i¬°Optional¡C
¦p¦ó¨Ï¥ÎOptional°Ñ¼Æ¡H
¡@
§Ú̪½±µ¥Î¤U±³oÓ¨Ò¤l¨Ó§i¶D§A¦p¦ó©w¸q¤Î¨Ï¥ÎOptional°Ñ¼Æ¡G
Option Explicit
Private Sub FormColor( _
Optional sngRed = 0, _
Optional sngGreen = 0, _
Optional sngBlue = 0 _
)
BackColor = RGB(sngRed * 256, sngGreen * 256, sngBlue * 256)
End Sub
Private Sub Form_Click()
FormColor sngGreen:=0.5 'Medium green
End Sub
¦b©w¸q¬YÓµ{§Çªº°Ñ¼Æ¦C®É¡A¥un§âOptionalÃöÁä¦r¥[¦b°Ñ¼Æ«e±¡A´N¥i¥H¿ï¾Ü©Ê¦a¶Ç¤J³¡¥÷©Î¥þ³¡¤Þ¼Æµ¹µ{§Ç¡A¦ý¬On°O±o¡A¦b©I¥sµ{§Ç®É¡A¥²¶·«ü©ún¶Çµ¹þӰѼơC¦b¤W¨Ò¤¤§ÚÌ¥u¶Çȵ¹sngGreen°Ñ¼Æ¡A¦Ü©ó¨ä¥L³Q¬Ù²¤ªº°Ñ¼Æ¡Aµ{§Ç·|¦Û°Ê¨Ï¥Î¹w³]È0¡C
½Ðª`·N¡AVisual Basic 6ªº°Ñ¼Æ¹w³]ȬO³]©w¦bµ{§Çªº°Ñ¼Æ¦CùØ¡A¦Ó¦bVisual Basic 4¤¤¡A¥²¶·¥ÎIsMissing¨ç¦¡¨ÓÀˬd¬YÓOptional°Ñ¼Æ¡AµM«á¦A³]©w¨ä¹w³]È¡C¥t¥~¡AVisual Basic 6²{¦b¥i¥HÅý§ÚÌ©ú½T¦a«Å§iOptional°Ñ¼Æªº¸ê®Æ«¬§O¡C¦b«Å§iOptional°Ñ¼Æªº¸ê®Æ«¬§O®É¡A°£¤FVariant¤§¥~¡A¨ä¥Lªº°ò¥»¸ê®Æ«¬§O¤]³£¥i¥H¨Ï¥Î¡C¥t¥~ȱoª`·N¬O¡A¤@¥¹©w¸q¬YӰѼƬ°Optional°Ñ¼Æ¤§«á¡A¦b¥¦«á±°Ñ¼Æ³£¥²¶·©w¸q¦¨Optional¡C
°Ñ¦Ò¸ê®Æ¡G
¦b²Ä¤T¤Q³¹"µo®i¤u¨ã" ¸ÌªºMetricÀ³¥Îµ{¦¡¬O¤@ӨϥÎOptional°Ñ¼Æªº½d¨Ò¡C
¦p¦ó¶Ç»¼°Ñ¼Æ°}¦C¡H
¡@
¦b¬YÓµ{§Çªº°Ñ¼Æ¦C¤¤¡A¦pªG§A§â³Ì«á¤@ӰѼƥÎParamArray«Å§i¬°Variant°}¦C¡A´N¥i¥H¶Ç»¼¥ô·N¼Æ¥Øªº¤Þ¼Æµ¹³oÓµ{§Ç¡A³oºØ°Ñ¼ÆºÙ¬°°Ñ¼Æ°}¦C¡]Parameter Array¡^¡C¤U±³oÓ¨Ò¤l´N¬O¨Ï¥Î°Ñ¼Æ°}¦C¡G
Option Explicit
Private Function MakeVerticalList(ParamArray vntN()) As String
Dim strA As String, i As Integer
For i = LBound(vntN) To UBound(vntN)
strA = strA + vbCrLf + CStr(vntN(i))
Next i
MakeVerticalList = strA
End Function
Private Sub Form_Click()
Dim intA As Integer
Dim sngB As Single
Dim strC As String
intA = 123
sngB = 3.1416
strC = "This is a test."
Print MakeVerticalList(intA, sngB, strC)
Print
Print MakeVerticalList("This", "time", "we'll", "pass five", _
"string arguments.")
End Sub
§ÚÌ©I¥s¤FMakeVerticalListµ{§Ç¨â¦¸¡A²Ä¤@¦¸¥Î¤F¤TÓ¤£¦P«¬§Oªº¤Þ¼Æ¡A²Ä¤G¦¸¥Î¤F¤Ó¦r¦ê¤Þ¼Æ¡C¹Ï4-1Åã¥Ü¤Fµ{¦¡ªº¿é¥Xµ²ªG¡C
¡@
| ¹Ï4-1 MakeVerticalListµ{§Çªº¿é¥Xµ²ªG |
¦p¦ó¥Î¦P¤@ӰѼƶǻ¼¥ô·N«¬§Oªº¤Þ¼Æ¡H
¡@
VariantÅܼƥi¥H¦s©ñ¥ô·N«¬§Oªº¸ê®Æ¡A³oÓ¯S©ÊÅý§ÚÌ¥i¥H¶Ç»¼¤£¦P«¬§Oªº¤Þ¼Æµ¹µ{§Ç¡A¥un°O±o¦b«Å§i°Ñ¼Æ«¬§O®É¥ÎVariant ¡]©Î§¹¥þ¤£n¥Î«¬§O«Å§i¡A¨t²Î·|¹w³]³o°Ñ¼Æ¬°Variant¡^¡C¨Ò¦p¡A¦b¤U±ªº¨Ò¤l¸Ì¡A§Ú̧â¾ã¼Æ¡B¦r¦ê©M°}¦C³£¶Çµ¹¤FVariantTestµ{§Ç¡C
Option Explicit
Private Sub VariantTest(vntV)
Print TypeName(vntV)
End Sub
Private Sub Form_Click()
Dim dblA(3, 4, 5, 6, 7) As Double
VariantTest 123
VariantTest "This is a test string."
VariantTest dblA
End Sub
µ{§ÇVariantTest°ß¤@°Ñ¼ÆvntVªº¸ê®Æ«¬§O¬OVariant¡A¦]¦¹¥¦±µ¨ü¥ô¦ó«¬§Oªº¤Þ¼Æ¡C¹Ï4-2Åã¥Üªº¬O°õ¦æªºµ²ªG¡C
¡@
| ¹Ï4-2 ¨Ï¥ÎVariant°Ñ¼Æªºµ{§Çªº¿é¥Xµ²ªG |
¦p¦ó¦b°Ñ¼Æ¦C¤¤¨Ï¥Î¦CÁ|¶°¦X?
¡@
¨Ï¥Î¦CÁ|¶°¦X¡]Enum¡^¥i¥H©w°Ñ¼Æ©Ò¯à±µ¨üªºÈ¡CEnum¥Î¤@²Õ³Q©R¦Wªº¤¸¯À¨Ó¥Nªí·Qn³]©wªºÈ¡A´N¹³ConstÃöÁä¦r¤@¼Ë¡A¦ý¬OEnumªº¦WºÙ¥i¥H§@¬°µ{§Ç¤¤°Ñ¼Æªº«¬§O¡C¦b¼¶¼gµ{¦¡½X®É¡A¦pªG§A¥´¤J¤F¨Ï¥Î¬YÓEnum°Ñ¼Æªºµ{§Ç¦WºÙ¡AVisual Basicªº¦Û°Ê¦C¥X¦¨û¥\¯à¡]Auto List Members¡^·|§â³oÓEnum¤¤©Ò¦³ªº¦¨û¦Û°ÊÅã¥Ü¦b¤@Ó§ÖÅãµøµ¡¤¤¡A²¤Æ¼g½Xªº¤u§@¡C½Ð¥Î¤U±³oÓµ{¦¡¸Õ¸Õ¦Û°Ê¦C¥X¦¨û¥\¯à¹B§@ªº±¡§Î¡G
Enum Number
Zero
One
Two
Three
End Enum
Sub ShowNumber(Value As Number)
MsgBox Value
End Sub
Sub Form_Load()
ShowNumber One
End Sub
·í§A¦bForm_Loadµ{§ÇùØ¥´¤JShowNumber«á¡AVisual Basic·|¦Û°ÊÅã¥Ü¤@Ó§tNumber¦¨ûªº²M³æ¡A¦pªG³o®É§AÂI¿ï¨ä¤¤¤@Ó¦¨û¡AVisual Basic´N·|§â³QÂI¿ïªº¦¨û¶ñ¤J¤Þ¼Æ¦C¤¤¡C¦pªG¦b¤@ӨϥΪ̱±¨î¶µ¡]User Control¡^ªºÄݩʵ{§Ç¸Ì¡]¨Ò¦pLet¡^¨Ï¥Î¤@ÓEnum¨Ó«Å§i¨ä°Ñ¼Æ¦C¡AVisual Basic¤]´£¨Ñ¤FÃþ¦ü¦Û°Ê¦C¥X¦¨ûªº¥\¯à¡A«K§Q§A¼¶¼gµ{¦¡¡C½Ð¬Ý¤U±³oÓ¨Ò¤l¡G
Enum Number
Zero
One
Two
End Enum
Dim mValue As Number
Property Get Value() As Number
Value = mValue
End Property
Property Let Value(Setting As Number)
mValue = Setting
End Property
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
mValue = PropBag.ReadProperty("Value", One)
End Sub
Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
PropBag.WriteProperty "Value", mValue, One
End Sub
ReadProperties©MWriteProperties¨Æ¥óµ{§Ç¥Î¨ÓºûÅ@Äݩʵøµ¡¤¤ValueÄݩʪº³]©wÈ¡A·í§A¦bÄݩʵøµ¡¤¤³]©wValueÄݩʮɡA§A´N¥i¥H¬Ý¨ì¦bNumber¸Ìªº¦¨û¡GZero¡BOne¡BTwo¡A¦p¹Ï4-3©Ò¥Ü¡C
¡@
| ¹Ï4-3 ¦bÄݩʵøµ¡¤¤¦C¥X¦CÁ|¶°¦XNumberªº¦¨û |
³Ì«á¡A§ÚÌn§i¶D§A¦³¨â«h¦³ÃöEnumªº¸ê°T¡CEnum·|§â¯BÂI¼Æ¦Û°Ê±j¨îÂà´«¬°ªø¾ã¼Æ¡F¦pªG§A¶Ç¤J0.9µ¹«e¤@Ó¨Ò¤lªºShowNumberµ{§Ç¡A«h¨äÅã¥Üªºµ²ªG¬O1¡C¨ä¦¸¡AEnum¨Ã¤£´£¨Ñ¥ô¦óÀˬd¢w§Y¨Ï¤£¦Xªkªº³]©wȤ]·|³Q±µ¨ü¡A§A¥²¶·¦Û¤v¼¶¼gµ{¦¡½X¨ÓÀˬd¶Ç¤Jªº¸ê®Æ¬O§_¦Xªk¡C