當時是用foreach實現遍歷,但是函式傳入引數是object型別的,由於objectl型別沒有實現相關介面,所以foreach並不能執行。
那麼下面我們來看看,想要使用foreach需要具備什麼條件。
需要實現ienumerable介面或宣告getenumerator方法的型別。
下面我們來看看foreach原理,
參考原文
為什麼有些類可以可以用foreach遍歷,有些類卻不可以了.經反編譯過後得出:
//任何型別,只要想使用foreach來迴圈遍歷,就必須在當前型別中
//存在: public ienumerator getenumerator()方法,(一般情況我們會通過實現ienumerable介面,來建立該方法。)
foreach (string item in
p)
//ienumerator etor = p.getenumerator();
//while (etor.movenext())
//
console.readkey();
} }
public
class
person : ienumerable
} public
string
this[int
index]
set
else
} }
public
string
name
public
intage
public
string
#region ienumerable 成員
//這個方法的作用不是用來遍歷的,而是用來獲取乙個物件
//這個物件才是用來遍歷的。
public
ienumerator getenumerator()
#endregion
}
//這個型別,的作用就是用來遍歷person中的list集合的。
public
class
personenumerator : ienumerator
//這個欄位中儲存的就是person物件中的listcar集合
private listcars;
//假設一開始遍歷的物件的索引是-1
private
int index = -1
;
#region ienumerator 成員
//表示獲取當前正在遍歷的那個物件
public
object
current
return
cars[index];
} }
//讓自定義下標index累加
public
bool
movenext()
else
} public
void
reset()
#endregion
} }
如果大家想要詳細了解 foreach語句。建議大家學習一下迭代器。
參考**
棧涉及的問題
question 記憶體中的堆疊和資料結構的堆疊 answer 1.記憶體中的堆疊是真實存在的物理區,資料結構中的堆疊是抽象的資料儲存結構 記憶體空間邏輯上分為 區 靜態資料區 動態資料區 棧區 堆區 區儲存二進位制 作業排程,記憶體排程,程序排程,控制 區執行 切換 靜態資料區 儲存全域性變數 靜...
MySQL涉及鎖的問題
如何併發的訪問資料庫呢?答案就是加鎖。接下來說一下,資料庫的鎖機制,資料庫中都有哪些鎖?首先呢,鎖是一種併發控制技術,鎖是用來在多個使用者同時訪問同乙個資料的時候保護資料的。有2種基本的鎖型別 共享 s 鎖 多個事務可封鎖乙個共享頁 任何事務都不能修改該頁 通常是該頁被讀取完畢,s鎖立即被釋放。在執...
foreach中引用 的問題
在工作中遇到 關於 php foreach 引用的乙個問題 簡單來說,如下 arr array a b c d foreach arr as k v foreach arr as k v print r arr 結果是 ab cc參考了 這篇文章,以及 這篇文章 在第一次foreach 遍歷結束後,...