今天在開發中遇到了這樣乙個問題
簡單來說,就是有乙個介面,使用者會進行一些操作把資料傳到方法內。在方法內我會先吧伺服器中的資料通過id全部拿出來,然後通過迴圈一一匹配,把資料新增到另外一片記憶體中。最後,我想要把新新增的資料覆蓋使用者操作的資料,奇蹟的事情發生了。。。
大家可以看到監視器中,list資料為count1
data1的資料為0
在上面的**中,我將data1的資料直接給了list
發現沒有?
list的資料沒有變哎,why?????
下面上**,首先是我的model
1接著是我的邏輯塊public
class
amodel24
public listbmodels 5}
67public
class
bmodel810
public
int bstatus
11 }
1呼叫方法public
async
static
void testtest(listlist)211
};12
for (int i = 0; i < list.count; i++)
1320
}21 list =data1;
22 }
1實在百思不得其解的我,只能一步步的使用排除法來嘗試var amodel = new list()2,
12new
bmodel()
1316}17
}18};19 testtest(amodel);
會不會是因為我在查詢條件裡使用了傳輸資料呢?
var servicedata = model1.firstordefault(c => c.bid == list[i].bmodels[j].bid);我把這行**進行了分解
1然後再來試一下var bid =list[i].bmodels[j].bid;
2var servicedata = model1.firstordefault(c => c.bid == bid);
ok了。。。
可是。。。
why???
難道是因為不使用變數,某些記憶體不會進行釋放?
還是。。快取?
只有開闢出一片新的空間,供別處呼叫,才不會影響原有資料?
各種各樣的方法在我的腦中打轉
忽然乙個念頭衝進了我的腦中,難道是因為async?畢竟這個是4.5之後才封裝出來的東西
可是,這個也不應該啊,就算是async,也不應該會影響賦值操作吧?引用型別?
先試試再說,把**復原,刪掉async
果然如此。
那麼,我是不是可以理解為,當使用非同步時,
var servicedata = model1.firstordefault(c => c.bid == list[i].bmodels[j].bid);
當我使用乙個變數去接收時,
var bid = list[i].bmodels[j].bid;
相當於開放了一部分空間供list[i].bmodels[j].bid 來使用,所以,即使我再方法結束後,再重新給原資料賦值,因為沒有用到bid這份空間,所以也就沒了牽連?
以上全是小弟自己研究,如果有不對的地方,希望各位大神能指出來。
雖然困擾我的問題已解決,但是卻不知道理解的對不對。。
安裝sqlserver導致80埠被占用解決方法
系統占用的埠一般都是微軟官方的產品占用的。所以這個時候主要考慮到幾個服務 sql server導致。其中很有可能是sql server reporting services mssqlserver 它是 sql server 的日誌系統。iis 服務。如果你電腦安裝了這個,很有可能它在執行著,那麼它...
mysql表空間被占用,同名表無法建立或匯入
刪除mysql表 用的是innodb 時沒有用drop table命令,只是簡單刪除表目錄,這導致表空間還存在,這樣就不可以加同名表進去。當要重新匯入新的同名表或者建立新的同名表時,會提示錯誤 error tablespace for table database temp exists.pleas...
Apache預設埠80被占用無法啟動服務問題
在實際工作中,有時執行apache服務,會發現apache預設埠80被占用無法啟動服務,然後查詢時卻發現無法具體哪個程序被占用,這個時候我們應該怎樣去解決問題呢?1 首先通過cmd 的netstat ano命令檢視具體哪個程序占用埠80。2 然後進入任務管理器關閉pid為4的程序,結果沒有找到pid...