【发布时间】:2009-07-10 00:09:42
【问题描述】:
在什么情况下最好使用引用参数来返回值?
Sub Example(byref value as integer)
value = 3
End Sub
在什么情况下最好返回值(也许在更复杂类型的结构中)?
Function Example() as integer
return 3
End Function
【问题讨论】:
标签: vb.net reference arguments
在什么情况下最好使用引用参数来返回值?
Sub Example(byref value as integer)
value = 3
End Sub
在什么情况下最好返回值(也许在更复杂类型的结构中)?
Function Example() as integer
return 3
End Function
【问题讨论】:
标签: vb.net reference arguments
一般来说,我会避免使用引用参数来返回值。
设计指南建议避免这种情况,这就是为什么 Microsoft 代码分析工具在发现它时会发出警告。Do not pass types by reference.
返回值而不是通过引用传递参数几乎总是更易于维护,除非有非常特殊的需要。如果您正在生成一个新值,请将其返回。
【讨论】:
当您想要返回操作的状态或状态以及操作的结果时。
想想 TryParse..它返回一个转换结果为真或假,它通过一个 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
但除此之外,正如其他人建议的那样,我不会经常使用 by ref,它会使代码非常难以阅读和调试。
【讨论】:
这真的取决于函数在做什么。但是,通常,如果只有一个返回值,则调用者更容易按值。他们可以这样做:
int foo = Example(foo)
或:
int modifiedFoo = Example(foo)
按照他们的喜好。
【讨论】: