问题标签 [byref]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2286 浏览

vb.net - 使用 ParamArray ByRef

有什么方法可以使用 ParamArray ByRef 吗?除此之外,是否有一种解决方法可以完成同样的事情?

我可以做一些超载,但我试图避免笨拙。

背景:移植一些旧代码,并尽可能保持相同的结构。


编辑

我想要的一个具体例子:

我在 turboBasic 中有一些代码要移植到 vb.net。该代码具有内置功能,例如

Input() 获取文件 #1 并从中读取三段数据并将其分配给所示的三个变量。我想用我自己的 Input() 函数复制这种行为。为此,我将如何接受三个(或更多,或更少)变量并为它们赋值?

理想情况下,我只需修改我自己的 Input() 定义即可完成此操作,因此我可以尽可能少地在代码库中添加垃圾。

0 投票
1 回答
609 浏览

vb.net - VB.NET 指向值类型的指针

VB.NET 2010、.NET 4

大家好,

我绝不是一个好的程序员,我只是想把我的脑袋绕在这些东西上,所以如果这是一个愚蠢的问题,请原谅我。

我希望以下内容生成一个显示“2”而不是“5”的消息框:

这行不通。消息框显示“5”。我想我在某种程度上理解了为什么。由于 SomeInt 是一个值类型,将它添加到 SomeListOfInts 只是添加一个副本。如果这不连贯,我很抱歉。有没有什么直接的方法可以做到这一点?

在此先感谢,布赖恩

编辑:我只是想补充一下,我怀疑人们会说“为什么要这样做?”/“这不是一件好事。” 等等。我对此很好,并且想知道一种更好的方法(如果有的话),但是,我通常也很好奇如何完成这样的事情,无论它是否是好的做法。另外,如果这不是好的做法(无论这意味着什么),为什么?

0 投票
5 回答
181 浏览

c# - 将对象传递给方法,然后在该对象上调用扩展方法

昨天我正在研究一个方法并遇到了一些奇怪的事情,这里是代码的简化版本:基本上问题是在 Bar.PopulateList 方法中应用的 OrderBy 没有持久化。

现在,如果我更新代码并按照下面添加 ref 关键字,一切正常:例如 public static int PopulateList(ref List theList) 和 Bar.PopulateList(ref MyObjects);

任何人都可以启发我吗?我认为对象总是由 ref 传递?OrderBy 是一种扩展方法吗?

谢谢, 西安

0 投票
4 回答
53495 浏览

vb.net - ByRef vs ByVal 澄清

我刚刚开始学习一个类来处理与 TCP 服务器的客户端连接。这是我迄今为止编写的代码:

所以,在我重载的构造函数上,我接受了对a实例引用,是吗?System.Net.Sockets.Socket

现在,在我的Socket财产上,设置值时,它必须是ByVal. 我的理解是复制内存中的实例,并将这个新实例传递给,并且我的代码设置为引用内存中的这个实例。是的?value_Socket

如果这是真的,那么我不明白为什么我想将属性用于除本机类型之外的任何东西。我想如果复制具有大量成员的类实例,性能会受到很大影响。此外,特别是对于这段代码,我想复制的套接字实例不会真正起作用,但我还没有测试过。

无论如何,如果你能证实我的理解,或者解释我模糊逻辑中的缺陷,我将不胜感激。

0 投票
3 回答
1288 浏览

generics - F# 成员约束 + ^a byref 参数

在玩了一些 F# 成员约束功能和编写这样的函数之后:

这工作得很好:

我正在尝试编写其他 func tryParse,它使用静态方法TryParse并将解析结果包装成'a option类型,以便在 F# 中获得更好的支持。像这样的东西不会编译:

错误是:

错误 FS0001:此表达式的类型应为 byref<'a> 但此处的类型为 'a ref

F# ref-cells 也不起作用:

我究竟做错了什么?

0 投票
2 回答
4635 浏览

vb.net - 'ByRef' 参数 '' 不能在 lambda 表达式中使用

我正在使用 SharpZipLib 压缩文件。该库包装在一个插件接口中,在一个单独的 DLL 中。我向插件 dll 传递了一个ByRef参数来跟踪压缩进度。

SharpZipLib 在压缩时会定期调用在启动压缩时传递的委托子。ByRef我不知道在调用委托时如何更新参数。如果我尝试ByRef在 Lamba 表达式的主体中分配变量,则会出现'ByRef' parameter '<parametername>' cannot be used in a lambda expression错误。

这是我的代码:

谢谢!

0 投票
1 回答
6482 浏览

.net - 理解 byref、ref 和 &

好吧,我开始明白 F# 能够管理引用(某种 C++ 之类的引用)。这使得改变函数中传递的参数的值成为可能,并且还使程序员能够返回多个值。但是,这是我需要知道的:

  1. Ref 关键字:该关键字ref用于从一个值创建对推断类型的该值的引用。所以

    这意味着 F# 将创建一个类型的对象Ref<int>放在那里(在可变字段中) my int 10

    好的。所以我假设它ref用于创建Ref<'a>类型的实例。这是正确的吗?

  2. 访问值:为了访问存储在引用中的值,我可以这样做:

    虽然:=操作员只是让我像这样编辑值:

    所以!(Bang) 取消引用我的参考。并:=编辑它。我想这也是正确的。

  3. & 运算符:这个运算符是做什么的?它是否适用于引用类型?不,我想它必须应用于可变值,这会返回什么?参考资料?地址?如果使用交互式:

    最后一行抛出一个错误,所以我不明白&运算符的用途。

  4. ByRef:那byref呢?这对我来说很重要,但我意识到我不明白。我知道它用于有关参数传递的功能。当他希望可以编辑传递的值时使用 byref(这有点违背函数式语言的理念,但 f# 不止于此)。考虑以下:

    这很奇怪。我知道,如果你有一个参考let myref = ref 10,然后这样做来编辑值:myref <- 10它会出现一个错误,因为它应该是这样的:myref := 10。但是,在该函数中我可以x使用<-运算符进行编辑这一事实意味着这x不是参考,对吧?

    如果我假设这x不是参考,那么我还假设,在函数中,当byref在参数上使用时,该参数可以应用可变语法。所以这只是语法问题,如果我假设我没问题,而且事实上,一切正常(没有编译器错误)。然而,什么是x

  5. 调用函数:如何使用利用 byref 参数的函数?

    运营商参与其中&,但您能更好地解释一下吗?在本文中:MSDN 参数和参数中提供了以下示例:

    /li>
0 投票
5 回答
8716 浏览

c# - 在 VB.NET 和 C# 中传递字符串 ByVal

那么字符串是引用类型吗?我的理解是,即使您将字符串 ByVal 传递给方法,也会传递对堆中字符串的引用。

呜呜呜……

或者

我错过了什么?引擎盖下发生了什么?我敢打赌价值会改变....

0 投票
2 回答
20935 浏览

powershell - 使用参数(“按引用”参数)从 PowerShell 返回对象?

我有一个 PowerShell (2.0) 脚本调用另一个。我不仅想接收主输出,还想接收一个可以单独使用的附加对象,例如在消息中显示摘要行。

让我们将 Test2.ps1 作为被调用的脚本:

并将 Test1.ps1 作为调用它的脚本:

输出很简单:

尽管参数 $SummaryLine 由 Test2 填充,但 $SummaryOutput 在 Test1 中仍未定义。

在调用 Test2 之前定义 $SummaryOutput 没有帮助;它只是保留调用 Test2 之前分配的值。

我尝试将 $SummaryOutput 和 $SummaryLine 设置为 [ref] 变量(显然可以使用函数),但调用 Test2 后 $SummaryOutput.Value 属性为 $null。

在 PowerShell 中是否可以在参数中返回值?如果不是,有什么解决方法?在 Test2 中直接分配父级范围的变量?

0 投票
2 回答
4568 浏览

.net - Func(Of Tin, Tout) 使用带有 ByRef 参数的 lambda 表达式给出不兼容的签名错误

为什么会这样:

给出以下错误:

嵌套函数没有与委托字符串兼容的签名)'。

虽然这样:

才不是?(区别在于 ByRef/ByVal)

此外,我该如何实现这样的事情?