?
快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

亞博國際首頁登入:C中foreach基礎使用方法

?

昨天做師長教師的網站功課。要對一些工具做添加改動刪除處置懲罰。其余倒沒什么,刪除時呈現了點問題似的。

由于是從一個類的聚攏中刪除掉落一個元素。這樣就要遍歷全部聚攏,而foreach恰是為遍歷籌備亞博國際首頁登入的新玩意。自然而然用上了。于是代碼類似如下:

string temp = name.Text; // 從TextBox中讀出數據

foreach (LCo亞博國際首頁登入urse cou in Data.myCourse) // 在List中遍歷

{

if (cou.name == temp) // 判斷cou的名字匹配

{

Data.myCourse.Remove(cou); // 匹配的即為要刪除的,從列表中去除

break; // 跳出輪回

}

}

很輕易就想到這么用foreach,貌似也沒差錯。然則印象中關于foreach的留意點便是只適用于遍歷讀取,不能改動。上邊的代碼卻刪除成功。這樣,抵觸的種子亞博國際首頁登入就種在了心里,到底foreach是個什么器械?

歷程:

看了MSDN文檔,可是文檔里的示例用到時都是遍歷讀取每個元素,以是贊助不大年夜。相關測試,非常,編譯差錯反倒有很大年夜用場。

歷程細節和總結:

1.自定義整型數組然后遍歷改動

foreach(int myint in myArray)

{ myint+=8;}

差錯:“myint”是一個“foreach 迭代變量”,無法為它賦值G:TESTVS..C#testfor亞博國際首頁登入eachProgram.cs 15 27 testforeach

2.自定義類,在類中定義函數對私有成員進行操作,然后遍歷類工具并調用函數

public class MyClass // 自定義的測試類

{

private int i = 0;

public void change()

{

i = 98;

}

public override string ToString()

{

return i.ToString();

}

}

MyClass[] myTest = new MyClass[10]; // 測試代碼片段

foreach (MyClass mc in myTest)

{

mc.change();

Console.WriteLine(mc.ToString());

}

經由過程了編譯,然則拋出非常,NullRefferenceException,未將工具引用設置到工具的實例。

3.便是像開首測試的例子,稍有篡改,移除后不用break跳出

List myString = new List();

myString.Add("ab");

myString.Add("cd");

foreach (string s in myString)

{

myString.Remove(s);

}

編譯經由過程了,但運行時拋出非常,InvalidOperationException,聚攏已改動;可能無法履行羅列操作。

經由過程上面三個測試例子和開首的實際例子,我貌似看到了foreach的某種器械。

第一,不能改動的是foreach引用變量,由于它是引用的,對它的改動沒故意義也沒有感化,它亞博國際首頁登入就像一個c/c++指針那樣對聚攏中的元素進行指向引用;我們能經由過程引用看到它,然則沒有能力動它。

第二,in之前的變量是引用變量,但in之后的聚攏確是實其著實的,以是可以對它操作,像.ADD();REMOVE()等措施可以應用。

第三,foreach引用變量大年夜概是經由過程地址指向后面的聚攏(我猜想跟c/c++的指針很像),當改動了聚攏的元素時,地址可能發生某種改變,以是不跳出輪回繼承遍歷時,就可能呈現引用找不到的環境。

著末,大概說的不精準,但這便是我理解的整個了。首先表揚下自己這樣的思路和精神,至于技巧深度,大年夜概沒什么。

免責聲明:以上內容源自網絡,版權歸原作者所有,如有侵犯您的原創版權請告知,我們將盡快刪除相關內容。

您可能還會對下面的文章感興趣:

快三平台开户