LINQ(二)

  1. 當函數參數裏面有out或者ref關鍵字時,不能將foreach 對象及含有索引器的變量傳遞進去,無法改變其值,如下
for (int n = 0; n < listSelChkCond.Count; n++)
 {
 	 //ref 和 out 不能直接傳帶有索引器或者foreach成員的值
     CommGX.CCommGXDB.GetFieldType(entExInfo, ref listSelChkCond[n]);  
 }
  1. 改成下列方法就可以,先把值賦給一個結構,然後傳參,再傳回來
  for (int n = 0; n < listSelChkCond.Count; n++)
  {
  	  //先將list成員賦值給一個獨立的變量
      CommDB.CCommStruct.CheckCondition cc = listSelChkCond[n];
      //ref傳入該變量
      CommGX.CCommGXDB.GetFieldType(entExInfo, ref cc); 
      //將改變值的變量回賦給list集合對應的成員 
      listSelChkCond[n] = cc;
  }
  1. 當然也可以使用linq語句,select可以傳參:
listSelChkCond =  listSelChkCond.Select(p => CommGX.CCommGXDB.GetFieldType(entExInfo,ref p); return p; }).ToList();

使用All的話就不行,不能傳值回來:

listSelChkCond.ALL(p => { CommGX.CCommGXDB.GetFieldType(entExInfo,ref p); return p; }).ToList();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章