问题标签 [convertall]

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 投票
2 回答
427 浏览

powershell - Powershell - 如何使用 $List.convertAll() 或替代 C# 方法来克隆列表

假设我有一个列表:

所以我可以轻松地从集合中添加和删除用户。

我希望能够将此列表传递给执行某些操作但不修改原始列表的函数,并且它必须保持相同的通用列表类型。

convertAll()似乎完全符合我的要求,而不必自己编写新列表的创建脚本foreach-object,但我不明白如何利用重载定义(或完全理解它们的含义)。

C# 中有很多示例,但我无法找到一个在 PoSH 中演示它的示例。

示例场景:

假设 $DeletedUsers 包含 PSCustomObject 类型的用户对象列表。具有典型的“用户”属性,例如部门或就业状态。该列表应该能够传递给将更改用户属性状态的函数,然后可以将其添加到相同 Generic.List 类型的单独输出列表中。

当前示例函数的任何更改。

影响原始 $DeletedUsers,错误地将处理后的信息添加到应保持静态的列表中。

有其他方法可以防止这种情况影响脚本的最终目标,但问题是:

如何使用内置 C# 方法创建 System.Collections.Generic.List[System.object] 的真实、非引用克隆。

0 投票
1 回答
53 浏览

c# - 在更改列表之前使用 Linq ConvertAll 创建列表的备份

我正在做一个项目,我有一个包含嵌套列表的对象列表,我想在更新原始列表之前对其进行备份。

我很接近,但我无法找到正确的语法,所以我希望你能在这里帮助我。

这是原始类:

就在我更新 OriginalList 上的点之前,我想创建 OriginalList 的深层副本,以便我可以“撤消”更改。

目前我正在使用下面的代码:

尽管此代码创建了原始列表的深层副本,但它将列表 Points 中的所有点替换为 0(因为新的 double())

但是使用

给了我正确的分数,但是当原始列表更新时它们也会更新。

我想我必须做类似的事情

但我找不到正确的语法。

任何帮助表示赞赏。

0 投票
0 回答
94 浏览

c# - 使用 C# Array.ConvertAll 时,Visual Studio 2017 调试器不显示变量

当我使用 C#Array.ConvertAll时,转换器函数主体中的变量在 Visual Studio 2017 的调试器中不再可见。

例如在:

该变量OriginalArray在调试器“Local”/“Autos”/“Watch”窗口中不可见。当以如下代码中的方式使用时,变量是可见的:

请参阅随附的屏幕截图: Visual-Studio-2017-Array-ConvertAll-Not-Showing-Variable-01.png Visual-Studio-2017-Showing-Variable-with foreach-loop-02.png