2011-08-08 21 views
1

克隆一个堆栈时遇到了这个问题...不知道它是一个.NET错误还是预期的行为。意见?堆栈克隆问题:.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 
+0

我的意见是,它不是.net的错误。 –

+3

你的代码甚至不会为我编译。你在使用一些有趣的扩展方法吗?你可以发布一个简短但完整的控制台应用程序来演示这个吗 –

+0

您确定您没有使用非通用堆栈(http://msdn.microsoft.com/en-us/library/system.collections.stack.aspx)?通用堆栈没有克隆方法。 – alun

回答

8

这不是一个净错误。 Stack(Of T)类型不具有Clone方法或属性。这是由下面的代码不上标准VB.Net控制台项目

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

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