對於 foreach 的解讀

2022-03-17 17:06:57 字數 976 閱讀 8928

foreach 是for 的公升級  是為了方便遍歷的

今天在看書的時候    又看到了  foreach的迭代變數是唯讀的,所以不能改變

比如這段**

struct mystruct

}public class program

, new mystruct  };

foreach (var item in array)

//for (int i = 0; i < array.length; i++)

編譯就沒法通過,顯示  迭代變數沒法修改

網上說法不一   不過大部分還是主張不能修改

後來翻看 c#**教程

看到這樣一句話:

由於迭代變數的值是唯讀的,所以不能改變。但是,對於值型別陣列和引用型別陣列而言效果不大一樣。

值型別陣列會編譯錯誤。

引用性陣列仍然不能更改變數,但是迭代變數只是儲存了資料的引用,而不是資料本身。

比如如下**

class  myclass

public int myfield=0;

class program

static void main()

myclass mcarray =new myclass[4];

for(int i=0;i<4;i++)

mvarray[i]=new myclass();

mvarray[i].myfield=i;

foreach(myclass item in mcarray)

item.myfield+=10;

foreach(myclass item in mcarray)

console.writeline("",item.myfield);

這樣子的話 除錯就可以,想來應該是因為 變數只是指向於他的引用,只要這個引用不發生變化就可以

後來查c#中的struct   果然是值型別...  所以第乙個中的資料是直接儲存在棧中的 是不能隨便修改的

angular原始碼解讀 forEach方法遍歷

angular中提供了foreach 方法用於遍歷物件或陣列 function foreach obj,iterator,context else if isarray obj isarraylike obj else if obj.foreach obj.foreach foreach else ...

解讀Adobe對於HTML5和Flash未來戰略

adobe官方新聞稿,我為大家解讀一下。主題 flash將專注於pc瀏覽和移動應用 adobe將更加積極地為html5投入貢獻 adobe仍然為合作夥伴提供源 授權許可,方便他們的整合實現需求。adobe已經開始flash player 12的開發,並且會加入大量高階的功能來提公升flash的遊戲和...

解讀Adobe對於HTML5和Flash未來戰略

adobe官方新聞稿,我為大家解讀一下。主題 flash將專注於pc瀏覽和移動應用 adobe將更加積極地為html5投入貢獻 adobe仍然為合作夥伴提供源 授權許可,方便他們的整合實現需求。adobe已經開始flash player 12的開發,並且會加入大量高階的功能來提公升flash的遊戲和...