【发布时间】:2008-11-19 16:29:17
【问题描述】:
我不时看到这个,想知道它是什么。我确实尝试过 google,但它从搜索中过滤掉了字符。我有几本书也没有参考。
FWIW,我记得帕斯卡是赋值运算符。
谁能指点我到 MSDN 或类似页面?
【问题讨论】:
-
这只是一个简单的问题......
标签: .net vb.net colon-equals
我不时看到这个,想知道它是什么。我确实尝试过 google,但它从搜索中过滤掉了字符。我有几本书也没有参考。
FWIW,我记得帕斯卡是赋值运算符。
谁能指点我到 MSDN 或类似页面?
【问题讨论】:
标签: .net vb.net colon-equals
您可以使用 := 语法按名称而不是严格按位置将参数分配给 Sub 或 Function。例如:
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
TestRoutine(Y:="TestString", X:=12)
End Sub
Private Sub TestRoutine(ByVal X As Long, Optional Y As String = "")
' Do something with X and Y here... '
End Sub
End Class
请注意,TestRoutine 将 X 指定为第一个参数,Y 指定为第二个参数,但 Form1_Load 中的调用将它们的顺序相反,使用 := 运算符命名每个参数。
这里是关于该主题的 MSDN 文章的链接:
http://msdn.microsoft.com/en-us/library/51wfzyw0.aspx
我不经常看到这个使用,除了在 Excel 的宏记录器生成的 VBA 宏中,它使用它很多。
【讨论】:
:= 操作符很聪明,我喜欢@CraigGidney 的评论,但是如果您正在编写需要多个参数的方法,那么它们确实应该封装在一个结构或类中。使用具有多个参数的 API,尤其是 Optional,是很棘手的。感觉:= 有点像解决设计问题的技巧。
当有多个可选参数时,它非常有用 - 您会在代码中看到很多调用 Office 对象模型(Word、Excel 等)的情况。当您有 40 个参数,其中 37 个参数是可选的,并且您想要设置值时对于参数 34 和 40,使用 := 比使用看起来像 ("new", "settings", 1, ,,,,,,,,, 的函数调用更清楚很多 ,,,,,,,,,,,,,,,,,,,43,,2,,,,,7)
我想向 JeffK 发表评论,但我没有足够的代表。
【讨论】:
VB 使用该运算符进行属性值分配:
http://www.ondotnet.com/pub/a/dotnet/excerpt/vbnut_8/index1.html
【讨论】: