[問題] List<T> Add Method

看板C_Sharp作者 (青)時間15年前 (2010/04/08 21:20), 編輯推噓2(209)
留言11則, 3人參與, 最新討論串1/1
請教各位先進 目前我要利用link list建一顆huffman tree 我把node都丟在List的datatype中 當我從List中取出兩個node後,在new一個node和此兩個node link 當我把new出來的node加入List後 想請問一下Add這個行為,他是作Copy的動作,還是Ref的動作? 我這邊Copy的意思是說,只有Copy new出來的node進去,link的部份沒有處理 還請各位指點一下,謝謝 補一下Code的描述: 假設List裡有{node1, node2, node3, node4, node5} Node newNode = new Node(); newNode.Left = List[0]; newNode.Reght = List[1]; List.Add(newNode); 經過上述處理後,List內容應為{node1, node2, ....., newNode} 我的意思是說,如果我操作以下動作會不會有問題 Console.WriteLine(List[6].Left.Content.ToString()); 簡單來說,就是我push進去的Node,他如果有指向其他東西 在Add進去後,可否透過List的方式叫出指標所指到物件? -- ˍˍ 活出自己 ▕吞佛▏ 才是此生的快意 ▕童子▏  ̄ ̄ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.105.91

04/08 22:07, , 1F
聽不太懂你的問法。但是用ElementAt()叫出東西來時,參照型
04/08 22:07, 1F

04/08 22:08, , 2F
別的值會跟著改,但是結構、int那些實質型別不會一起改。
04/08 22:08, 2F
※ 編輯: godman362 來自: 140.123.214.123 (04/08 22:40)

04/08 22:56, , 3F
你的方法是可以的。 但是請注意,LIST[6]會讀不到東西,因為
04/08 22:56, 3F

04/08 22:56, , 4F
索引是從0開始
04/08 22:56, 4F

04/08 23:10, , 5F
抱歉,是我打錯了
04/08 23:10, 5F

04/08 23:11, , 6F
所以說,new出的Node,他所建立的link是不會有問題的嗎
04/08 23:11, 6F

04/09 02:31, , 7F
It depends. 實值和參考型別的 assign 行為不同
04/09 02:31, 7F

04/09 02:32, , 8F
用你的說法的話 實值型別會Copy 參考型別會Ref
04/09 02:32, 8F

04/09 02:33, , 9F
因為你的 Node 顯然是參考型別 所以回答你最後的問題
04/09 02:33, 9F

04/09 02:33, , 10F
04/09 02:33, 10F

04/09 17:04, , 11F
謝謝兩位,這樣我明白了
04/09 17:04, 11F
文章代碼(AID): #1BlTWNLV (C_Sharp)