问题标签 [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 投票
1 回答
971 浏览

com - VB6 COM 在 byRef Variant 中返回 ADODB.Recordset。如何在 C# 中检索?

我正在尝试调用此 COM 方法:

Out_Data 作为 ADODB.Recordset (2.6) 被定义并填充到方法主体中。

我已经尝试了几种我能想到的不同方法,但似乎仍然无法将记录集对象取出或取出。

有任何想法吗?

谢谢...

0 投票
2 回答
1738 浏览

.net - 如何实现与 Dictionary.TryGetValue 相同的行为

所以,给定下面的代码

以及下面的测试代码

r1,v1 行工作正常。r2,v2 线炸弹;抱怨 c.TryGetValue 必须被赋予一个元组。有趣的是,在每一行中,TryGetValue 的签名都是不同的。如何让我的自定义实现表现出与 BCL 版本相同的行为?或者,换一种方式问,既然F#(隐含)有元组参数、柯里化参数和BCL参数的概念,而且我知道如何区分柯里化和元组样式,我该如何强制第三种样式(a la BCL方法)?

如果不清楚,请告诉我。

0 投票
2 回答
750 浏览

.net - Powershell / .Net:获取对方法返回的对象的引用

我正在通过编写一个简单的解析器来自学 PowerShell。我使用 .Net 框架类Collections.Stack。我想修改堆栈顶部的对象。

我知道我可以pop()关闭对象,修改它,然后push()重新打开它,但这让我觉得不雅。

首先,我试过这个:

这引发了一个错误:

接下来我尝试了这个:

这防止了错误,但仍然没有做正确的事情:

显然,分配给 $ary 的是堆栈顶部对象的副本,所以当我在 $ary 中的对象时,堆栈顶部的对象保持不变。

最后,我阅读了 [ref] 类型,并尝试了这个:

但仍然没有骰子:

我假设该peek()方法返回对实际对象的引用,而不是克隆。如果是这样,那么引用似乎被 PowerShell 的表达式处理逻辑的克隆替换。

有人可以告诉我是否有办法做我想做的事?还是我必须恢复到pop()/ 修改 / push()

0 投票
1 回答
1077 浏览

.net - 反射:如何获取引用类型的底层类型

尽管存在 ParameterInfo.IsOut、ParameterInfo.IsIn(据我所见,它们都始终为假)、ParameterAttributes,但我很惊讶地发现“ref”和“out”参数没有被特殊属性标记。 In 和 ParameterAttributes.Out。相反,“ref”参数实际上由一种特殊的“Type”对象表示,而“out”参数只是带有附加属性的 ref 参数(我还不知道什么样的属性)。

无论如何,要创建一个 by-ref 参数,你调用 Type.MakeByRefType(),但我的问题是,如果你已经有一个 by-ref 类型,你如何回到原来的 Type?

提示:它不是 UnderlyingSystemType:

0 投票
3 回答
42092 浏览

c# - 如何在 C# 中“做”ByVal

据我了解,C# 通过引用将参数传递给方法。在 VB.NET 中,您可以使用 ByVal 和 ByRef 指定它。默认值为 ByVal。

这是为了与 Visual Basic 6.0 兼容,还是只是随机的?另外,如何指定在 C# 中使用什么?我有点喜欢按值传递参数的想法。

0 投票
2 回答
1372 浏览

python - Python 通过引用访问对象/需要标记

我需要从标准输入中吸取数据并创建一个对象。

传入数据的长度在 5 到 10 行之间。每行都有一个进程号和一个 IP 地址或一个哈希值。例如:

我需要将这些数据放入一个类中,例如:

我需要能够通过 IP、HASH 或 PID 来查找对象。

困难的部分是来自标准输入的多个混合数据流。(可能有成百上千个进程同时写入数据。)

我有正则表达式提取我需要的 PID、IP 和 HASH,但是我如何通过这些值访问对象?

我的想法是做这样的事情:

这给了我一个包含两个键(一个 PID 和一个 IP)的数组,它们都指向同一个对象。但是在循环的下一次迭代中,如果我找到(例如)一个 IP 和 HASH 并执行以下操作:

以下是假的:

希望这很清楚。我不想承认,在 VB 时代,我记得能够处理对象 byref 而不是 byval。Python中有类似的东西吗?还是我只是在接近这个错误?

0 投票
3 回答
2336 浏览

javascript - 使对象不通过引用传递

我刚刚发现在Javascript中通过引用传递对象的困难方式,例如:

这将改变 tempValues 和 hudLayers 中的值。(似乎有点明显,但没有一点代码的帖子似乎很赤裸裸。)

有没有快速解决这个问题的方法?

0 投票
3 回答
14563 浏览

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

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

谢谢,
CFP。

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

它输出:

0 投票
4 回答
2414 浏览

vb.net - 为什么在 VB.NET 中传递“Me”ByRef 是合法的?

刚才我震惊地发现以下是合法的(C#等价物绝对不是):

但对我来说奇怪的是,它似乎并没有达到的预期:

上面的输出是“10”,而不是我想象的“0”(当然,这种期望本身就充满了某种恐怖)。所以看起来你可以通过Me ByRef,但是编译器会以某种方式覆盖(?)行为,就好像你已经通过了Me ByVal

  1. 为什么通过是合法的Me ByRef(是否有一些向后兼容的解释?)
  2. 我是否正确地说这样做的行为被编译器覆盖了?如果没有,我错过了什么?
0 投票
1 回答
604 浏览

f# - address-of 和 ref 运算符之间的区别

在我的代码中,我通过引用传递了一些结构,将它们声明为可变并使用&符号。问题是在某些地方字段已损坏(仅在发布模式下发生),我完全不知道为什么。

我找到了一个修复方法,使用 ref 关键字而不是地址运算符。我知道您可以自由交换它们(在实例成员参数的情况下),但为什么它解决了我的问题?

这是一个说明这一点的小代码示例:

使用 byref 传递结构似乎仅对互操作场景有用,或者如果您想改变结构的字段。然而,这不是我的情况。我是否应该考虑按值传递结构类型(大约 20 个字节左右)?

谢谢!