一些資料來源的for和foreach寫法

2021-09-06 01:13:18 字數 1524 閱讀 5483

1.dropdownlist

for寫法:

for(

inti=0

;i<

this

.ddl_userlist.items.count;i++)

} foreach寫法:

foreach

(listitem item

inthis

.dropdownlistcontrol.items)}

2.memorysteam

foreach寫法:

memorystream stream

=new

memorystream()

stringbuilder builder

=new

stringbuilder();

foreach

(byte

num in"

", num);}

3.dataset/datatable

for寫法:

dataset datarec

=...

for(

inti=0

;i<

dmgroupbyuser.tables[

0].rows.count;i++)

foreach寫法:

foreach

(datarow currentdr

indatarec.tables[

0].rows)

#6樓2008-08-24 17:38 | angel lucifer

既然大家如此執著於兩者,俺來表達下自己的看法:

for 和 foreach 表達的都是迭代語義。

但 foreach 實際上是 c# 編譯器對迭代器的封裝,它僅能對實現了 .net 迭代器模式的集合進行順序訪問,除此之外,它什麼也幹不了。從這點上來看,算是對 facade 模式的運用。當然它要比 for 語法上優雅那麼一點。這一點正是 facade 模式遮蔽了迭代集合時的囉嗦之處。

foreach 甚至只能唯讀訪問集合,而不能修改集合。如果你要在迭代期間修改集合,會丟擲 invalidoperationexception。這是 .net bcl 團隊的設計目標。不過在對併發集合訪問時,.net bcl 團隊正打算修改這個設計目標,使其可以在迭代期間修改集合,但這仍然要在聽取開發人員反饋之後,才能作出正式決定。而且一旦可以修改,在帶來幾許好處外,還會引入相當多的麻煩。

而 for 則不同,它除了可以做到上面的功能,還可以修改集合內容,此外還可以進行其他領域的迭代。

至於效能,對在除陣列之外的集合進行迭代唯讀訪問時,它兩個效能等效。而在陣列時,效能也差不多,嚴格的說,是 for 效能稍高一點,因為少了幾分函式呼叫開銷,但其實效能相差不大,這只有在千萬數量級及其以上才能體現出影響。

所以,拿 for 與 foreach 進行比較是不公平的, foreach 僅僅是 for 實現功能的乙個子集。

更多的可以參考 .net 的 bcl 以及 c++ 的 stl 和 boost。

SpringBoot學習 資料來源(一)單資料來源

springboot2.1.9預設支援三種資料來源 connection pool com.zaxxer.hikari.hikaridatasource org.apache.tomcat.jdbc.pool.datasource org.apache.commons.dbcp2.basicdata...

Xa資料來源和非Xa資料來源的選擇

weblogic xa資料來源和非xa資料來源的選擇 在專案上,不管是adf應用,bpm應用,或者是osb soa介面,資料來源和出站連線池的建立必然少不了,而資料來源的型別就有xa資料來源和非xa資料來源,那我們如何選擇呢,選擇不當會造成什麼後果呢,下面給出一點小小的心得 如何選擇 在新建資料來源...

Spring 配置單資料來源和多資料來源

如何配置多資料來源?1.spring直接配置所需的bean 事務相關 可選 操作相關 可選 2.springboot做了哪些配置?符合條件時才進行配置。1 spring boot中預設資料來源的發展 spring boot 1.x 預設使用tomcat的datasource。spring boot ...