【问题标题】:Stack Clone Problem: .NET Bug or Expected Behaviour?堆栈克隆问题:.NET 错误或预期行为?
【发布时间】:2011-10-22 17:59:25
【问题描述】:

我在克隆堆栈时遇到了这个问题...不确定这是 .NET 错误还是预期的行为。意见?

Dim myStack As New Stack(Of Integer)({2,1,3})
Response.Write(String.Join(",",myStack.Clone) & "<br>" & String.Join(",",myStack.Clone.Clone))

输出:

2,1,3
3,1,2 <- I expected 2,1,3

【问题讨论】:

  • 我的看法是这不是.net的错误。
  • 您的代码甚至无法为我编译。你在使用一些有趣的扩展方法吗?你能发布一个简短但完整的控制台应用程序来演示这一点吗?
  • 您确定您没有使用非通用堆栈 (msdn.microsoft.com/en-us/library/system.collections.stack.aspx)?通用堆栈没有克隆方法。
  • @alun:即便如此,看起来他在这里使用了一个属性,而非泛型 Clone() 是一个方法。
  • 你说得对,乔恩......我在我的扩展中添加了 .Clone 到 Stack(Of T) ......我忘记了并认为 .Clone 是 Stack(Of T) 的原生 - 谢谢!

标签: .net vb.net


【解决方案1】:

这不是 .Net 错误。 Stack(Of T) 类型不具有 Clone 方法或属性。以下代码证明了这一点,该代码无法在标准 VB.Net 控制台项目上编译

Dim stack As New Stack(Of Integer)({2, 1, 3})
Console.WriteLine(String.Join(",", stack.Clone))

绑定到的Clone 方法必须是在项目中某处定义的扩展方法。错误或设计行为就在那里。

【讨论】:

    猜你喜欢
    • 2011-11-15
    • 2020-12-17
    • 2018-03-30
    • 1970-01-01
    • 1970-01-01
    • 2018-12-29
    • 2016-08-05
    • 2015-06-29
    • 1970-01-01
    相关资源
    最近更新 更多