2011-08-08 22 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方法被綁定到必須在項目中的某處定義的擴展方法編譯證明。錯誤或設計行爲就在那裏。