问题标签 [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.
com - VB6 COM 在 byRef Variant 中返回 ADODB.Recordset。如何在 C# 中检索?
我正在尝试调用此 COM 方法:
Out_Data 作为 ADODB.Recordset (2.6) 被定义并填充到方法主体中。
我已经尝试了几种我能想到的不同方法,但似乎仍然无法将记录集对象取出或取出。
有任何想法吗?
谢谢...
.net - 如何实现与 Dictionary.TryGetValue 相同的行为
所以,给定下面的代码
以及下面的测试代码
r1,v1 行工作正常。r2,v2 线炸弹;抱怨 c.TryGetValue 必须被赋予一个元组。有趣的是,在每一行中,TryGetValue 的签名都是不同的。如何让我的自定义实现表现出与 BCL 版本相同的行为?或者,换一种方式问,既然F#(隐含)有元组参数、柯里化参数和BCL参数的概念,而且我知道如何区分柯里化和元组样式,我该如何强制第三种样式(a la BCL方法)?
如果不清楚,请告诉我。
.net - Powershell / .Net:获取对方法返回的对象的引用
我正在通过编写一个简单的解析器来自学 PowerShell。我使用 .Net 框架类Collections.Stack
。我想修改堆栈顶部的对象。
我知道我可以pop()
关闭对象,修改它,然后push()
重新打开它,但这让我觉得不雅。
首先,我试过这个:
这引发了一个错误:
接下来我尝试了这个:
这防止了错误,但仍然没有做正确的事情:
显然,分配给 $ary 的是堆栈顶部对象的副本,所以当我在 $ary 中的对象时,堆栈顶部的对象保持不变。
最后,我阅读了 [ref] 类型,并尝试了这个:
但仍然没有骰子:
我假设该peek()
方法返回对实际对象的引用,而不是克隆。如果是这样,那么引用似乎被 PowerShell 的表达式处理逻辑的克隆替换。
有人可以告诉我是否有办法做我想做的事?还是我必须恢复到pop()
/ 修改 / push()
?
.net - 反射:如何获取引用类型的底层类型
尽管存在 ParameterInfo.IsOut、ParameterInfo.IsIn(据我所见,它们都始终为假)、ParameterAttributes,但我很惊讶地发现“ref”和“out”参数没有被特殊属性标记。 In 和 ParameterAttributes.Out。相反,“ref”参数实际上由一种特殊的“Type”对象表示,而“out”参数只是带有附加属性的 ref 参数(我还不知道什么样的属性)。
无论如何,要创建一个 by-ref 参数,你调用 Type.MakeByRefType(),但我的问题是,如果你已经有一个 by-ref 类型,你如何回到原来的 Type?
提示:它不是 UnderlyingSystemType:
c# - 如何在 C# 中“做”ByVal
据我了解,C# 通过引用将参数传递给方法。在 VB.NET 中,您可以使用 ByVal 和 ByRef 指定它。默认值为 ByVal。
这是为了与 Visual Basic 6.0 兼容,还是只是随机的?另外,如何指定在 C# 中使用什么?我有点喜欢按值传递参数的想法。
python - Python 通过引用访问对象/需要标记
我需要从标准输入中吸取数据并创建一个对象。
传入数据的长度在 5 到 10 行之间。每行都有一个进程号和一个 IP 地址或一个哈希值。例如:
我需要将这些数据放入一个类中,例如:
我需要能够通过 IP、HASH 或 PID 来查找对象。
困难的部分是来自标准输入的多个混合数据流。(可能有成百上千个进程同时写入数据。)
我有正则表达式提取我需要的 PID、IP 和 HASH,但是我如何通过这些值访问对象?
我的想法是做这样的事情:
这给了我一个包含两个键(一个 PID 和一个 IP)的数组,它们都指向同一个对象。但是在循环的下一次迭代中,如果我找到(例如)一个 IP 和 HASH 并执行以下操作:
以下是假的:
希望这很清楚。我不想承认,在 VB 时代,我记得能够处理对象 byref 而不是 byval。Python中有类似的东西吗?还是我只是在接近这个错误?
javascript - 使对象不通过引用传递
我刚刚发现在Javascript中通过引用传递对象的困难方式,例如:
这将改变 tempValues 和 hudLayers 中的值。(似乎有点明显,但没有一点代码的帖子似乎很赤裸裸。)
有没有快速解决这个问题的方法?
vb.net - 传递字符串时的 ByRef 与 ByVal 性能
阅读哪个更快?ByVal 还是 ByRef?让我想知道那里的评论是否确实适用Strings
于性能。由于字符串在传递之前被复制,传递字符串不是更有效(如果被调用者不需要字符串课程的副本)ByRef
吗?
谢谢,
CFP。
编辑:考虑一下这段代码,这让我觉得有某种副本正在进行:
它输出:
vb.net - 为什么在 VB.NET 中传递“Me”ByRef 是合法的?
刚才我震惊地发现以下是合法的(C#等价物绝对不是):
但对我来说更奇怪的是,它似乎并没有达到我的预期:
上面的输出是“10”,而不是我想象的“0”(当然,这种期望本身就充满了某种恐怖)。所以看起来你可以通过Me
ByRef
,但是编译器会以某种方式覆盖(?)行为,就好像你已经通过了Me
ByVal
。
- 为什么通过是合法的
Me
ByRef
?(是否有一些向后兼容的解释?) - 我是否正确地说这样做的行为被编译器覆盖了?如果没有,我错过了什么?
f# - address-of 和 ref 运算符之间的区别
在我的代码中,我通过引用传递了一些结构,将它们声明为可变并使用&
符号。问题是在某些地方字段已损坏(仅在发布模式下发生),我完全不知道为什么。
我找到了一个修复方法,使用 ref 关键字而不是地址运算符。我知道您可以自由交换它们(在实例成员参数的情况下),但为什么它解决了我的问题?
这是一个说明这一点的小代码示例:
使用 byref 传递结构似乎仅对互操作场景有用,或者如果您想改变结构的字段。然而,这不是我的情况。我是否应该考虑按值传递结构类型(大约 20 个字节左右)?
谢谢!