gpt4 book ai didi

vb.net - 传递字符串时的 ByRef 与 ByVal 性能

转载 作者:行者123 更新时间:2023-12-04 22:25:29 25 4
gpt4 key购买 nike

阅读 Which is faster? ByVal or ByRef? 让我想知道那里的评论是否确实适用于 Strings 在性能方面。由于字符串在传递之前被复制,传递字符串 ByRef 不是更有效(如果被调用者不需要字符串类(class)的副本)吗?

谢谢,
CFP。

编辑: 考虑一下这段代码,它让我觉得有某种副本正在进行:

Sub Main()
Dim ByValStr As String = "Hello World (ByVal)!"
Dim ByRefStr As String = "Hello World (ByRef)!"

fooval(ByValStr)
fooref(ByRefStr)

Console.WriteLine("ByVal: " & ByValStr)
Console.WriteLine("ByRef: " & ByRefStr)

Console.ReadLine()
End Sub


Sub fooval(ByVal Str As String)
Str = "foobar"
End Sub

Sub fooref(ByRef Str As String)
Str = "foobar"
End Sub

它输出:
ByVal: Hello World (ByVal)!
ByRef: foobar

最佳答案

字符串在传递之前不会被复制。字符串是引用类型,尽管它们的行为有点像值类型。

您应该使用在您的需求上下文中最有意义的任何内容。 (如果您的要求恰好是“必须以牺牲所有其他考虑因素为代价来压缩每一纳秒的性能”,那么您可能应该破解分析器而不是询问 stackoverflow!)

这几乎可以肯定是您无需担心的事情,我怀疑是否存在显着的性能差异。我可以看到任何差异的唯一情况是在传递大值类型时。

关于vb.net - 传递字符串时的 ByRef 与 ByVal 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3308105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com