在 vb.net 中通过引用传递 const 参数

Passing a const parameter by reference in vb.net

本文关键字:const 参数 引用 vb net      更新时间:2023-10-16

可能的重复项:
VB.Net 中的参考文献

我想传递一个中型客户数据库对象,但我不想按值传递它,因为我认为这是不必要的。

在 c++ 中,当你有一个大对象时,按值传递它是低效的,因为副本是从它创建的,所以你通过引用传递它,这样就不会创建(传递的对象)的副本。我曾经将参数作为常量传递,因为这样如果我尝试更改函数中的对象,编译器就不会允许我这样做,这样我就不会伤害传递的对象(因为它是通过引用传递的)。是否可以在 vb.net 中模仿这一点,还是不需要?

我强烈怀疑您对如何在 VB 中传递值感到困惑。

如果您的 CustomerDb 类型是一个,则该类型的每个表达式都将有一个已经是引用的值。默认情况下,该引用将按值传递 - 但它仍然只是传递的引用,而不是整个对象。

如果您的 CustomerDb 类型是一个结构,那么您每次都会传递整个值 - 无论如何,您应该强烈考虑将其更改为类......

当然,当您按值传递引用时,这不会阻止对象在方法中被修改,但这确实意味着对参数变量本身的更改不会反映在调用代码

阅读我关于 C# 参数传递的文章 - 它在 VB 中大致相同。

在 .NET 中,类(我假设Customer)是引用类型。将引用类型作为参数传递会将引用(指针)传递给对象。因此,传递类非常有效,并且不会创建副本。

如果通过引用传递类,则该方法可以更改引用(指针),并且它将反映在调用方法中。

我不知道是否有一种简单的方法可以使论点只读。由于引用类型确实传递了引用,因此对对象所做的任何更改都将反映在原始对象中。如果您不希望修改原件,则可能需要副本。