有list資料結構如下:
name
numbera2
a3b7
現在需要把name相同的項合併,number累加,就是下表:
name
numbera5
b7雖然邏輯可以控制list無重複項,為了保險,我選擇用dictionary作為中間物件來實現功能,**如下:
1public listmergedata(listdatalist)213
else
1417}18
if (!utility.isnullorempty(resultdic))
1924}25
return
targetlist;
26 }
執行的結果如下:
targetlist列印輸出的結果是期望的結果:
name
numbera5
b7但是原datalist變成了:
name
numbera5
a3b7
這裡的問題就出在line 8 >> item=datalist[i];
c#是引用型別,看起來,我們在for迴圈的line 11把 dictionary的key為a的value(item)的number累加了一次,變成了5,這沒有一點問題,可是由於item是乙個物件,型別是object,屬於引用型別,所以原list中的第乙個物件a的值number也變成了5
關於C 引用型別一點認識
引用型別可以和指標一樣指向某個變數,但兩者在使用的時候還是有許多區別,1.宣告乙個引用型別後,一定要給他賦值,否則編譯通不過,特別是在類中,如果有引用成員變數時,一定要在建構函式的初始化列表中初始化,例如 class foo private int var foo f error,沒有初始化引用變數...
C 每天進步一點 引用型別和值型別
在剛參加工作面試時,我們經常會遇到有關值型別和引用型別的問題,你回答的怎麼樣直接影響你在別人心目中的印象,你回答的不好說明你對c 沒有深入的了解學習,今天我帶大家回顧下c 中的引用型別和值型別。clr支援兩種型別 引用型別和值型別。雖然fcl中大多數型別都是引用型別但程式中用的最多的還是值型別。引用...
C 中對值型別和引用型別的一點認識
區別值型別和引用型別的重要一點就是值型別賦值的時候是給出一塊記憶體空間,空間裡放下要賦給值型別的值。而引用型別是開闢一塊記憶體空間,空間裡放下的是要賦給引用型別值的指向位址。就像乙個是複製了銀行卡裡的現金,你花了你複製的現金,和該銀行卡是沒有關係的。而引用型別是複製了乙個銀行卡,此卡為銀行卡的副卡,...