使用引用参数或结构返回值

时间:2009-07-10 00:09:43

标签: vb.net reference arguments

在什么样的情况下,最好使用引用参数来返回值?


Sub Example(byref value as integer)
  value = 3
End Sub

在什么情况下最好返回值(可能在更复杂类型的结构中)?


Function Example() as integer
  return 3
End Function

3 个答案:

答案 0 :(得分:1)

一般情况下,我会避免使用引用参数来返回值。

设计指南建议避免这种情况,这就是Microsoft代码分析工具在找到它时发出警告的原因。Do not pass types by reference.

返回值几乎总是更易于维护,而不是通过引用传递参数,除非有非常具体的需要这样做。如果您要生成新值,请将其返回。

答案 1 :(得分:1)

当您想要返回操作的状态或状态以及操作的结果时。

想到TryParse..it将转换结果返回为true或false,并通过ref变量返回转换后的值。

 Dim number As Integer
 Dim result As Boolean = Int32.TryParse(value, number)


Public Shared Function TryParse ( _
    s As String, _
    <OutAttribute> ByRef result As Integer _
) As Boolean

但除此之外,正如其他人建议我不会使用ref那么多,它会使代码很难阅读和调试。

答案 2 :(得分:0)

这实际上取决于功能的作用。但是,通常情况下,如果只有一个返回,则调用者按值更容易。他们可以做到:

int foo = Example(foo)

或:

int modifiedFoo = Example(foo)

他们喜欢。