gpt4 book ai didi

.net - .NET 的 List(Of T).Reverse 方法的范围

转载 作者:行者123 更新时间:2023-12-02 05:39:41 26 4
gpt4 key购买 nike

我有一个带有 List 参数的简单函数。在使用它时,它会复制它并使用 .NET 的 List(Of T).Reverse 反转副本。方法。

Private Function FindThing(ByVal Things As List(Of Thing)) As Thing
Dim ReverseOrderThings As List(Of Thing) = Things
ReverseOrderThings.Reverse()
For Each t As Thing In ReverseOrderThings
...
Next
Return Nothing
End Function

我的参数定义为ByVal .但是,似乎 ByVal 并没有阻止过程中的代码更改列表的顺序。

Dim Things As List(Of Thing) = GetSortedListFromSomewhere()
Dim FoundThing As Thing = FindThing(Things)
For Each t As Thing In Things
...
'OMG! My Things are in reverse order!!1! WTF?'
Next

如何在这样的函数中保护我的列表参数?


更新:

这是复制列表的正确方法。

Dim ReverseOrderThings As List(Of Thing) = New List(Of Thing)(Things)

现在作为参数传递的列表不受 Reverse() 方法的影响。

最佳答案

制作列表的副本。

函数不能改变列表的值,事实上也不是。它正在更改列表包含的内容,这是允许的。唯一不允许的是分配变量以引用新列表。

关于.net - .NET 的 List(Of T).Reverse 方法的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/727205/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com