相关疑难解决方法(0)

最佳实践:ByRef或ByVal?在.Net

在ByRef和ByVal之间进行选择时需要考虑的事项是什么.

我理解两者之间的区别,但我不完全理解ByRef是否节省了资源,或者我们是否需要在.Net环境中担心这一点.

如果在某种情况下功能无关紧要,您如何在两者之间做出决定?

.net byref byval

18
推荐指数
5
解决办法
2万
查看次数

C#'ref'关键字,性能

如果你有一个Bitmap对象需要传递给众多方法(大约10个),最后到一个事件,它将在它被使用后最终被处理掉,是否(性能明智)将它传递给每一个那些方法通过引用而不是值?

按值传递,对象被复制,而不是通过引用传递.

(在这种情况下,性能至关重要.应用程序需要尽可能快地运行.)

c# performance ref

12
推荐指数
4
解决办法
1万
查看次数

通过引用传递值是否显着提高了速度?

可能重复:
按值传递值与传递参考性能C#.net

是否有人已经测试过通过引用传递参数是否明显快于复制它们?

但问题的主要焦点是:使用ref关键字与不使用它相反是否有任何缺点?

c# oop

7
推荐指数
2
解决办法
1万
查看次数

传递字符串时ByRef vs ByVal的性能

阅读哪个更快?ByVal还是ByRef?让我想知道那里的评论是否适用Strings于表现.由于字符串在传递之前被复制,因此传递字符串是不是更有效(如果被调用者不需要字符串过程的副本)ByRef

谢谢,
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
Run Code Online (Sandbox Code Playgroud)

它输出:

ByVal: Hello World (ByVal)!
ByRef: foobar
Run Code Online (Sandbox Code Playgroud)

vb.net string performance byref byval

4
推荐指数
1
解决办法
1万
查看次数

引用参数时方法更快吗?

有时,我得到了辅助方法,如:

private string generateReport(string doc, List<string> sheets, Blah blahblah)
{
    //doStuff()
}
Run Code Online (Sandbox Code Playgroud)

在我的代码中看到很多这个让我想知道我是不是在搞乱计算机内存 - 来回抛出参数.在基本层面上,这个问题通过使用类级别变量来解决,但在某些情况下,我可能是从一个类派生或使用另一个类的辅助方法.所以我的问题是:

使用引用是一个更好的选择吗?即

private string generateReport(ref string doc, ref List<string> sheets, ref Blah blahblah)
{
    //doStuff()
}
Run Code Online (Sandbox Code Playgroud)

什么时候应该我使用它(如果适用)?

谢谢.

c# reference

0
推荐指数
1
解决办法
118
查看次数

标签 统计

c# ×3

byref ×2

byval ×2

performance ×2

.net ×1

oop ×1

ref ×1

reference ×1

string ×1

vb.net ×1