C#學習日記29----二維索引器 與 foreach遍歷索引器
上一篇結尾的時候我留下了幾個問題,因為要斷電了沒有解決,這篇我們繼續上一篇的內容。點這裡回到上一個
問題1:
數組有多個維度的,而索引器也可以是多維度的嗎? ? ?
索引器可以是多維的,而上一篇我們定義的索引器只是一維索引器,而同陣列一樣可以定義多維索引器。例如我們索引電影院的一個放映室的座位號,第一排第一列為1號,一排2列為2號…如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test1 {//定义cinema类包含一个二维数组与一个二维访问器 class cinema {//定义一个二维数组 private string[,] seat = new string[5, 5]; //定义一个二维访问器 public string this[uint a, uint b] { get { return seat[a, b]; } set { seat[a, b] = value; } } } class Program { static void Main(string[] args) { cinema movieroom = new cinema();//实例化 //for循环遍历写入 for (uint i = 1; i < 5; i++) { for (uint j = 1; j < 5; j++) { movieroom[i, j] = "第" + i + "排 第" + j + "列"; } } //for循环遍历读出 for (uint i = 1; i < 5; i++) { for (uint j = 1; j < 5; j++) { Console.WriteLine(movieroom[i,j]+"\t"+((i-1)*4+j)+"号"); } } } } }
結果:
二維的索引器就是如此了,其他多維數的都以此類推,就不介紹了。
問題2:
已使用且有使用foreach語句進行簡單快速的遍歷,索引器也能使用foreach語句遍歷麼? ? ?
這個也是可以的,解決這個問題的時候有必要弄清楚foreach的執行步驟與原則.
foreach語句:
string[] str = new string[] { "HC1", "HC2", "HC3", "HC4" };//定义一个数组 foreach (string i in str)//使用foreach遍历 { Console.WriteLine(i); }
然而foreach語句會被解析為下面的程式碼段。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; //注意添加这个命名空间,否则没有IEnumerator这个类 namespace Example { class Program { static void Main(string[] args) { string[] str = new string[] {"HC1","HC2","HC3","HC4" }; //定义一个数组 //调用GetEnumerator()方法,获得数组的一个枚举 IEnumerator per = str.GetEnumerator(); //在while循环中,只要MoveNext()返回true,就一直循环下去 while (per.MoveNext()) { //用Current属性访问数组中的元素 string p = (string)per.Current; Console.WriteLine(p); } } } }
結果都一樣:
我們對string查看定義發現,string繼承於IEnumerable接口,IEnumerable接口中只有一個方法GetEnumerator();該方法的作用是,返回一個循環訪問集合的枚舉器IEnumerator,我們在轉IEnumerator的定義,它也是一個接口,裡面只有三個方法的聲明,Current(獲取集合中的當前元素),MoveNext(將枚舉數推進到集合的下一個元素,成功返回true,越過結尾返回false),Reset( 將枚舉數設為其初始位置,該位置位於集合中第一個元素之前),也就是說,如果在我們自訂的類別中沒有實作GetEnumerator方法,以及Current、MoveNext方法,就不能使用foreach語句遍歷了。
foreach語句遍歷自訂類別:
或是上面電影院的例子,但這次我們不使用一個循環輸出,而是實現結果一樣的。 。 。 。
以上就是 C#學習日記29----二維索引器 與 foreach遍歷索引器的內容,更多相關內容請關注PHP中文網(www.php.cn)!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

使用 C# 的 Active Directory 指南。在這裡,我們討論 Active Directory 在 C# 中的介紹和工作原理以及語法和範例。

多線程和異步的區別在於,多線程同時執行多個線程,而異步在不阻塞當前線程的情況下執行操作。多線程用於計算密集型任務,而異步用於用戶交互操作。多線程的優勢是提高計算性能,異步的優勢是不阻塞 UI 線程。選擇多線程還是異步取決於任務性質:計算密集型任務使用多線程,與外部資源交互且需要保持 UI 響應的任務使用異步。

可以採用多種方法修改 XML 格式:使用文本編輯器(如 Notepad )進行手工編輯;使用在線或桌面 XML 格式化工具(如 XMLbeautifier)進行自動格式化;使用 XML 轉換工具(如 XSLT)定義轉換規則;或者使用編程語言(如 Python)進行解析和操作。修改時需謹慎,並備份原始文件。
