在vb.net方法中使用ByVal,什么';这是惯例吗?

在vb.net方法中使用ByVal,什么';这是惯例吗?,vb.net,syntax,pass-by-value,Vb.net,Syntax,Pass By Value,在vb.net中,默认情况下,这些方法的参数使用ByVal,使其显式是更好的做法/常规做法 例如: 使用ByVal: Private Sub MySub(ByVal Q As String) { ' ... } End Sub 没有ByVal: Private Sub MySub(Q As String) { ' ... } End Sub 根据: 最好的编程实践是在每个声明的参数中包含ByVal或ByRef关键字 如果您使用Visual Studio,如果您没有明确指定它,它默

在vb.net中,默认情况下,这些方法的参数使用ByVal,使其显式是更好的做法/常规做法

例如:

使用ByVal:

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

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

最好的编程实践是在每个声明的参数中包含ByVal或ByRef关键字


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

通常的做法是,可以在ByValue或ByReference处指定方法参数。在VB.NET中,默认参数类型为
ByVal
。在许多编程语言中,方法参数默认值为
。如果参数未使用
ByVal
ByRef
限定,则参数类型将为ByVal。

从VS 2010 SP1开始,
ByVal
由IDE限定

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

  • 不管怎样,如果未明确指定
    ByVal
    ByRef
    ,则它是
  • 从方法签名中省略
    ByVal
    ,使
    ByRef
    脱颖而出
  • 它给代码添加了“噪音”。VB.Net已经非常冗长,不需要用不必要的
    ByVal
    s来混乱代码

  • 既然ByVal关键字是由VisualStudio自动插入的,如何删除它?是否有一个我错过的关闭选项?当我手动删除它,并单击另一行时,它会再次添加。我刚刚读到VS2010SP1不再自动包含ByVal,所以可能这就是您正在使用的版本。这只有在VS2008之前是正确的。从VS2010开始,MS已从您上面链接的MSDN页面中删除了上述语句。尝试更改该页面顶部的VS选择,然后查看。