首頁 後端開發 C#.Net教程 C#中foreach實例程式碼

C#中foreach實例程式碼

Jun 24, 2017 am 10:00 AM
.net

foreach可以遍歷一些資料類型。由圖可知,被遍歷的資料型別必須擁有GetEnumerator的公共方法。

在使用foreach遍歷時涉及到var推斷類型,這時如何不是實作泛型版本,則一律是object類型。

foreach遍歷只能讀取數據,不能修改數據,可以透過string檢測,string是可遍歷的,但是組成它的char是不能改變的。 (只在次情境下)。

foreach遍歷只進,一條一條往下讀,和操作資料庫的DataReader的Read方法類似。

 

由上面的分析可知,需要在類別的內部定義IEnumerator方法,才能被遍歷。這裡有兩個辦法可以解決。

方法一、透過yield

yield return 表達式;如果傳回值為IEnumerable則表示自動產生一個可迭代型別。

如果傳回值為IEnumerator則表示自動產生一個迭代器。其中IEnumerator類型就一個迭代器。

遍歷時能以此拿到上圖中person陣列的值。

方法二 透過實作IEnumerable介面

IEunmerable包含GetEunmetator的方法,且傳回值是IEnumerator的型別。

此時就需要另外一個類別去繼承IEnumerator接口,這樣才能返回它的子類,即可達到目的。

實作過程:

1.需要新增int型別的變量,用於標記索引的位置。這裡用int position=-1。

2.新增對應的數組變量,用來接收傳過來的數組。這裡用string[] persion;

3.實作的Curren屬性,需要傳回目前索引的資料。 return person[position];

4.實作MoveNext方法,需要將指標(索引)加1,向前移動,回傳值是bool類型,用於確定是否操作了索引。

5.實作Reset方法,這是重置方法,把position賦值為-1;

6.加入一個帶參數的建構函數,其中接收傳遞過來的資料。

#三、List集合分析

透過反射工具可知,List集合的Add方法就是給內部的item加值,而這個item是一個陣列。因為是泛型的,所以顯示為T。

也就是其中集合的內部有這樣一個變量,用來儲存添加進來的數據,也就像上面自己定義的數組一樣,這樣List集合類別就和上述

自訂的類別一致了,上述的定義只是為了演示過程,當然出於業務的需求,是可以自己去實現擴展上述類的,例如把靜態的數據

#改變為Add方法添加,篩選數據的邏輯等,都可以依照業務需求進行擴充。

以上是C#中foreach實例程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

分享幾個.NET開源的AI和LLM相關專案框架 分享幾個.NET開源的AI和LLM相關專案框架 May 06, 2024 pm 04:43 PM

當今人工智慧(AI)技術的發展如火如荼,它們在各個領域都展現了巨大的潛力和影響力。今天大姚給大家分享4個.NET開源的AI模型LLM相關的專案框架,希望能為大家提供一些參考。 https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.mdSemanticKernelSemanticKernel是一種開源的軟體開發工具包(SDK),旨在將大型語言模型(LLM)如OpenAI、Azure

C#的就業前景如何 C#的就業前景如何 Oct 19, 2023 am 11:02 AM

無論您是初學者還是有經驗的專業人士,掌握C#將為您的職業發展鋪平道路。

面向開發人員的.NET效能最佳化技術 面向開發人員的.NET效能最佳化技術 Sep 12, 2023 am 10:43 AM

如果你是.NET開發者,你必須意識到在交付高品質軟體方面,優化功能和效能的重要性。透過熟練使用提供的資源並減少網站載入時間,你不僅為使用者創造了愉快的體驗,還能減少基礎設施成本。

Java框架與.NET框架的效能差異 Java框架與.NET框架的效能差異 Jun 03, 2024 am 09:19 AM

在高並發請求處理方面,.NETASP.NETCoreWebAPI效能優於JavaSpringMVC,原因包括:AOT提前編譯,減少啟動時間;更精細的記憶體管理,由開發人員負責分配和釋放物件記憶體。

C#.NET面試問題和答案:提高您的專業知識 C#.NET面試問題和答案:提高您的專業知識 Apr 07, 2025 am 12:01 AM

C#.NET面試問題和答案包括基礎知識、核心概念和高級用法。 1)基礎知識:C#是微軟開發的面向對象語言,主要用於.NET框架。 2)核心概念:委託和事件允許動態綁定方法,LINQ提供強大查詢功能。 3)高級用法:異步編程提高響應性,表達式樹用於動態代碼構建。

C#.NET:探索核心概念和編程基礎知識 C#.NET:探索核心概念和編程基礎知識 Apr 10, 2025 am 09:32 AM

C#是一種現代、面向對象的編程語言,由微軟開發並作為.NET框架的一部分。 1.C#支持面向對象編程(OOP),包括封裝、繼承和多態。 2.C#中的異步編程通過async和await關鍵字實現,提高應用的響應性。 3.使用LINQ可以簡潔地處理數據集合。 4.常見錯誤包括空引用異常和索引超出範圍異常,調試技巧包括使用調試器和異常處理。 5.性能優化包括使用StringBuilder和避免不必要的裝箱和拆箱。

高級C#.NET教程:ACE您的下一次高級開發人員面試 高級C#.NET教程:ACE您的下一次高級開發人員面試 Apr 08, 2025 am 12:06 AM

C#高級開發者面試需要掌握異步編程、LINQ、.NET框架內部工作原理等核心知識。 1.異步編程通過async和await簡化操作,提升應用響應性。 2.LINQ以SQL風格操作數據,需注意性能。 3..NET框架的CLR管理內存,垃圾回收需謹慎使用。

從網絡到桌面:C#.NET的多功能性 從網絡到桌面:C#.NET的多功能性 Apr 15, 2025 am 12:07 AM

C#.NETisversatileforbothwebanddesktopdevelopment.1)Forweb,useASP.NETfordynamicapplications.2)Fordesktop,employWindowsFormsorWPFforrichinterfaces.3)UseXamarinforcross-platformdevelopment,enablingcodesharingacrossWindows,macOS,Linux,andmobiledevices.

See all articles