2014-04-18 63 views
0

我有以下代碼。將自定義對象添加到鏈接列表,該列表已損壞

private static Prints someprint = new Prints(); 
private static LinkedList<Prints> LList = new LinkedList<Prints>(); 



public static void Main() 
      { 
       Console.Clear(); 
       someprint.ChangePrint(101.18, 101.16, 16, TimeSpan.Parse("00:00:20"), DateTime.Parse("4/8/2014 6:50:10 PM"));     
       LList.AddLast(someprint); 

       someprint.ChangePrint(101.20, 101.10, 200, TimeSpan.Parse("00:00:20"), DateTime.Parse("4/8/2014 6:50:10 PM")); 
       LList.AddLast(someprint);     

       someprint.ChangePrint(102.38, 102.36, 16, TimeSpan.Parse("00:00:40"), DateTime.Parse("4/8/2014 7:15:15 PM")); 
       LList.AddLast(someprint); 

       LinkedListNode<Prints> somenode = new LinkedListNode<Prints>(new Prints()); 

       somenode = LList.First; 

       Console.WriteLine("LList"); 
       while (somenode != null) 
       { 
        somenode.Value.PrintToScreen(); 
        somenode = somenode.Next; 
       } 
       Console.ReadKey(); 

      } 

這是我得到的輸出。

LList 
Sell Print 
Start of Print=102.38 
End of Print=102.36 
Volume in Print=16 
Time Spanned by Print=00:00:40 
Time Stamp = 4/8/2014 7:15:15 PM 
Sell Print 
Start of Print=102.38 
End of Print=102.36 
Volume in Print=16 
Time Spanned by Print=00:00:40 
Time Stamp = 4/8/2014 7:15:15 PM 
Sell Print 
Start of Print=102.38 
End of Print=102.36 
Volume in Print=16 
Time Spanned by Print=00:00:40 
Time Stamp = 4/8/2014 7:15:15 PM 

我似乎無法弄清楚爲什麼在鏈表中的所有3打印是相同的。

我嘗試了一個只有整數值的示例程序,它工作。我試圖打印LList.Last.Value.PrintToScreen();只是在值被添加之後,並且在那一點上它會打印正確的值。但我似乎無法檢索鏈接列表。 任何人都可以請解釋。

回答

2

現在您將相同的打印實例添加到列表中3次。您需要創建單獨的實例。

private static LinkedList<Prints> LList = new LinkedList<Prints>(); 

public static void Main() 
{ 
    Console.Clear(); 
    Prints someprint = new Prints(); 
    someprint.ChangePrint(101.18, 101.16, 16, TimeSpan.Parse("00:00:20"), DateTime.Parse("4/8/2014 6:50:10 PM")); 
    LList.AddLast(someprint); 

    someprint = new Prints(); 
    someprint.ChangePrint(101.20, 101.10, 200, TimeSpan.Parse("00:00:20"), DateTime.Parse("4/8/2014 6:50:10 PM")); 
    LList.AddLast(someprint); 

    someprint = new Prints(); 
    someprint.ChangePrint(102.38, 102.36, 16, TimeSpan.Parse("00:00:40"), DateTime.Parse("4/8/2014 7:15:15 PM")); 
    LList.AddLast(someprint); 

    LinkedListNode<Prints> somenode = new LinkedListNode<Prints>(new Prints()); 

    somenode = LList.First; 

    Console.WriteLine("LList"); 
    while (somenode != null) 
    { 
     somenode.Value.PrintToScreen(); 
     somenode = somenode.Next; 
    } 
    Console.ReadKey(); 
} 
+0

在這種情況下,我實際上通過整個數據集到構造函數,而不是毫無意義創建一個空的對象,然後調用'ChangePrint'它直接之後。 – CompuChip

+0

但每次的價值都不一樣。當我在每次添加到LList後使用LList.Last.Value.PrintToScreen時,它會打印正確的值 – novice

+0

@CompuChip是的,這很有道理。我只是想用最少的代碼修改來指出問題。 –