c# - 如何将不同的值从一个堆栈复制到另一个堆栈

标签 c#

<分区>

我有两个整数堆栈 StackAStackB

StackA 具有以下值,但 StackB 没有内容。

StackA
-----
[40]
[11]
[56]
[10]
[11]
[56]

现在我需要将不同的值从 StackA 复制到 StackB。我试过了

    public static void CopyDistinctValues(Stack<int> source, Stack<int> destination)
    {
        int[] numArray = source.ToArray();
        for (int i = 0; i < numArray.Length; i++)
        {
            if (!destination.Contains(numArray[i]))
            {
                destination.Push(numArray[i]);
            }
        }
    }

它的工作原理,但我不确定它是否是最佳解决方案。

是否有更好的方法或任何内置方法来实现此目的?

如果不用Array也能搞定就更好了。

最佳答案

最短的方法是:

stackB = new Stack<int>(stackA.Distinct().Reverse());

需要反转,因为构造函数采用 IEnumerable 并且 Stack 的 IEnumerable 实现使其从最后一项开始。

关于c# - 如何将不同的值从一个堆栈复制到另一个堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54529621/

相关文章:

c# - 从程序集加载 MassTransit 消费者

c# - 在 swagger-codegen 中更改生成的数据模型属性的名称

c# - 如何更改 GraphicsPath 内的点的坐标?

c# - 以编程方式检查 Windows 服务是否正在运行 C#

c# - 如何找到计算机所属的组织单位? (事件目录 C#)

c# - 如何避免对类名和属性名使用相同的标识符?

c# - 根据另一个对象对列表进行排序

c# - 更改 vs 2008 编写的代码后,如何在 vs 2008 和 IE(网页)之间切换?

c# - 从复杂对象请求 int 时 Dapper 默认行为

c# - 使用属性在事件上使用目标