问题标签 [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.
vb.net - 使用 ParamArray ByRef
有什么方法可以使用 ParamArray ByRef 吗?除此之外,是否有一种解决方法可以完成同样的事情?
我可以做一些超载,但我试图避免笨拙。
背景:移植一些旧代码,并尽可能保持相同的结构。
编辑
我想要的一个具体例子:
我在 turboBasic 中有一些代码要移植到 vb.net。该代码具有内置功能,例如
Input() 获取文件 #1 并从中读取三段数据并将其分配给所示的三个变量。我想用我自己的 Input() 函数复制这种行为。为此,我将如何接受三个(或更多,或更少)变量并为它们赋值?
理想情况下,我只需修改我自己的 Input() 定义即可完成此操作,因此我可以尽可能少地在代码库中添加垃圾。
vb.net - VB.NET 指向值类型的指针
VB.NET 2010、.NET 4
大家好,
我绝不是一个好的程序员,我只是想把我的脑袋绕在这些东西上,所以如果这是一个愚蠢的问题,请原谅我。
我希望以下内容生成一个显示“2”而不是“5”的消息框:
这行不通。消息框显示“5”。我想我在某种程度上理解了为什么。由于 SomeInt 是一个值类型,将它添加到 SomeListOfInts 只是添加一个副本。如果这不连贯,我很抱歉。有没有什么直接的方法可以做到这一点?
在此先感谢,布赖恩
编辑:我只是想补充一下,我怀疑人们会说“为什么要这样做?”/“这不是一件好事。” 等等。我对此很好,并且想知道一种更好的方法(如果有的话),但是,我通常也很好奇如何完成这样的事情,无论它是否是好的做法。另外,如果这不是好的做法(无论这意味着什么),为什么?
c# - 将对象传递给方法,然后在该对象上调用扩展方法
昨天我正在研究一个方法并遇到了一些奇怪的事情,这里是代码的简化版本:基本上问题是在 Bar.PopulateList 方法中应用的 OrderBy 没有持久化。
现在,如果我更新代码并按照下面添加 ref 关键字,一切正常:例如 public static int PopulateList(ref List theList) 和 Bar.PopulateList(ref MyObjects);
任何人都可以启发我吗?我认为对象总是由 ref 传递?OrderBy 是一种扩展方法吗?
谢谢, 西安
vb.net - ByRef vs ByVal 澄清
我刚刚开始学习一个类来处理与 TCP 服务器的客户端连接。这是我迄今为止编写的代码:
所以,在我重载的构造函数上,我接受了对a实例的引用,是吗?System.Net.Sockets.Socket
现在,在我的Socket
财产上,设置值时,它必须是ByVal
. 我的理解是复制内存中的实例,并将这个新实例传递给,并且我的代码设置为引用内存中的这个实例。是的?value
_Socket
如果这是真的,那么我不明白为什么我想将属性用于除本机类型之外的任何东西。我想如果复制具有大量成员的类实例,性能会受到很大影响。此外,特别是对于这段代码,我想复制的套接字实例不会真正起作用,但我还没有测试过。
无论如何,如果你能证实我的理解,或者解释我模糊逻辑中的缺陷,我将不胜感激。
generics - F# 成员约束 + ^a byref 参数
在玩了一些 F# 成员约束功能和编写这样的函数之后:
这工作得很好:
我正在尝试编写其他 func tryParse
,它使用静态方法TryParse
并将解析结果包装成'a option
类型,以便在 F# 中获得更好的支持。像这样的东西不会编译:
错误是:
错误 FS0001:此表达式的类型应为 byref<'a> 但此处的类型为 'a ref
F# ref
-cells 也不起作用:
我究竟做错了什么?
vb.net - 'ByRef' 参数 '' 不能在 lambda 表达式中使用
我正在使用 SharpZipLib 压缩文件。该库包装在一个插件接口中,在一个单独的 DLL 中。我向插件 dll 传递了一个ByRef
参数来跟踪压缩进度。
SharpZipLib 在压缩时会定期调用在启动压缩时传递的委托子。ByRef
我不知道在调用委托时如何更新参数。如果我尝试ByRef
在 Lamba 表达式的主体中分配变量,则会出现'ByRef' parameter '<parametername>' cannot be used in a lambda expression
错误。
这是我的代码:
谢谢!
.net - 理解 byref、ref 和 &
好吧,我开始明白 F# 能够管理引用(某种 C++ 之类的引用)。这使得改变函数中传递的参数的值成为可能,并且还使程序员能够返回多个值。但是,这是我需要知道的:
Ref 关键字:该关键字
ref
用于从一个值创建对推断类型的该值的引用。所以这意味着 F# 将创建一个类型的对象
Ref<int>
放在那里(在可变字段中) myint 10
。好的。所以我假设它
ref
用于创建Ref<'a>
类型的实例。这是正确的吗?访问值:为了访问存储在引用中的值,我可以这样做:
虽然
:=
操作员只是让我像这样编辑值:所以
!
(Bang) 取消引用我的参考。并:=
编辑它。我想这也是正确的。& 运算符:这个运算符是做什么的?它是否适用于引用类型?不,我想它必须应用于可变值,这会返回什么?参考资料?地址?如果使用交互式:
最后一行抛出一个错误,所以我不明白
&
运算符的用途。ByRef:那
byref
呢?这对我来说很重要,但我意识到我不明白。我知道它用于有关参数传递的功能。当他希望可以编辑传递的值时使用 byref(这有点违背函数式语言的理念,但 f# 不止于此)。考虑以下:这很奇怪。我知道,如果你有一个参考
let myref = ref 10
,然后这样做来编辑值:myref <- 10
它会出现一个错误,因为它应该是这样的:myref := 10
。但是,在该函数中我可以x
使用<-
运算符进行编辑这一事实意味着这x
不是参考,对吧?如果我假设这
x
不是参考,那么我还假设,在函数中,当byref
在参数上使用时,该参数可以应用可变语法。所以这只是语法问题,如果我假设我没问题,而且事实上,一切正常(没有编译器错误)。然而,什么是x
?调用函数:如何使用利用 byref 参数的函数?
运营商参与其中
/li>&
,但您能更好地解释一下吗?在本文中:MSDN 参数和参数中提供了以下示例:
c# - 在 VB.NET 和 C# 中传递字符串 ByVal
那么字符串是引用类型吗?我的理解是,即使您将字符串 ByVal 传递给方法,也会传递对堆中字符串的引用。
呜呜呜……
或者
我错过了什么?引擎盖下发生了什么?我敢打赌价值会改变....
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 中直接分配父级范围的变量?
.net - Func(Of Tin, Tout) 使用带有 ByRef 参数的 lambda 表达式给出不兼容的签名错误
为什么会这样:
给出以下错误:
嵌套函数没有与委托字符串兼容的签名)'。
虽然这样:
才不是?(区别在于 ByRef/ByVal)
此外,我该如何实现这样的事情?