【问题标题】:What is the " := " operator in (VB).NET or what is it good for?(VB).NET 中的“:=”运算符是什么,或者它有什么用?
【发布时间】:2008-11-19 16:29:17
【问题描述】:

我不时看到这个,想知道它是什么。我确实尝试过 google,但它从搜索中过滤掉了字符。我有几本书也没有参考。

FWIW,我记得帕斯卡是赋值运算符。

谁能指点我到 MSDN 或类似页面?

【问题讨论】:

  • 这只是一个简单的问题......

标签: .net vb.net colon-equals


【解决方案1】:

您可以使用 := 语法按名称而不是严格按位置将参数分配给 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 宏中,它使用它很多

【讨论】:

  • 比我更好的答案!
  • 哇 - 我希望我在两个月前就知道了。这太壮观了。我认为我的未来会进行一些重构......
  • 它对于指出特定布尔参数的含义也非常有用。 useStyle:=True 比普通的 True 对读者来说更清晰。
  • := 操作符很聪明,我喜欢@CraigGidney 的评论,但是如果您正在编写需要多个参数的方法,那么它们确实应该封装在一个结构或类中。使用具有多个参数的 API,尤其是 Optional,是很棘手的。感觉:= 有点像解决设计问题的技巧。
【解决方案2】:

当有多个可选参数时,它非常有用 - 您会在代码中看到很多调用 Office 对象模型(Word、Excel 等)的情况。当您有 40 个参数,其中 37 个参数是可选的,并且您想要设置值时对于参数 34 和 40,使用 := 比使用看起来像 ("new", "settings", 1, ,,,,,,,,, 的函数调用更清楚很多 ,,,,,,,,,,,,,,,,,,,43,,2,,,,,7)

我想向 JeffK 发表评论,但我没有足够的代表。

【讨论】:

  • 这真是太恐怖了,你见过这样的代码吗?不过,当您必须计算逗号时,上帝会保佑等宽字体。
  • @Camilo 哦,是的,如果你尝试用 C# 编写 Office,你最终会做很多这样的事情——甚至像 Documents.New() 这样简单的事情,因为所有的可选参数。跨度>
  • 所以... C# 没有相当于 VB 的 ":="? :震惊:
  • 在 C# 4.0 中添加了命名参数(如“:”),但在撰写本文时仍处于候选发布状态;很可能会发布 RSN。
【解决方案3】:

VB 使用该运算符进行属性值分配:

http://www.ondotnet.com/pub/a/dotnet/excerpt/vbnut_8/index1.html

【讨论】:

  • 谢谢,在某些情况下我很好奇它原来是使用命名的可选参数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-11
  • 2017-04-15
  • 1970-01-01
  • 1970-01-01
  • 2021-06-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多