【问题标题】:Using ByVal in vb.net methods, what's the common practice?在 vb.net 方法中使用 ByVal,常见的做法是什么?
【发布时间】:2011-11-13 14:07:53
【问题描述】:

在 vb.net 中,这些方法的参数默认使用 ByVal,最好将其明确化?

例如:

使用 ByVal:

Private Sub MySub(ByVal Q As String)
{
   ' ...
}
End Sub

没有 ByVal:

Private Sub MySub(Q As String)
{
   ' ...
}
End Sub

【问题讨论】:

  • 如何删除 ByVal 关键字,因为它是由 Visual Studio 自动插入的?有没有我错过的关闭它的选项?
  • 当我手动删除它并单击另一行时,它会再次添加。我刚刚读到 VS2010 SP1 不再自动包含 ByVal,所以也许这就是您正在使用的版本。

标签: vb.net syntax pass-by-value


【解决方案1】:

根据Microsoft

在每个声明的参数中包含 ByVal 或 ByRef 关键字是一种很好的编程习惯。

如果你使用 Visual Studio,如果你没有明确指定它,它默认插入ByVal

【讨论】:

  • 这仅在 VS2008 之前是正确的。从 VS2010 开始,MS 已从您上面链接的 MSDN 页面中删除了上述声明。尝试更改该页面顶部的 VS 选择并查看。
【解决方案2】:

从 VS 2010 SP1 开始,ByVal 在 IDE 中是 no longer automatically inserted

我个人认为最好不要手动插入ByVal,因为:

  1. 如果ByValByRef 均未明确指定,则无论如何都是default passing mechanism
  2. 在方法签名中省略 ByVal 会使 ByRef 脱颖而出。
  3. 它在代码中添加了“噪音”。 VB.Net 已经很冗长了,没必要用不必要的ByVals 把代码弄得乱七八糟。

【讨论】:

    【解决方案3】:

    通常的做法是可以在 ByValue 或 ByReference 处指定方法参数。在 VB.NET 中,默认参数类型是 ByVal。在许多编程语言中,方法参数默认为by-value。如果参数不符合ByValByRef,则参数类型将为ByVal。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-29
      • 1970-01-01
      • 1970-01-01
      • 2010-10-16
      • 2011-07-16
      • 1970-01-01
      • 2020-05-07
      • 1970-01-01
      相关资源
      最近更新 更多