日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

多列集合的索引器实现

發布時間:2023/12/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 多列集合的索引器实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

單列索引器的實現,在上一篇博文中已經談到。本文將主要探討多列集合的索引器的實現方式。

下面的代碼只是利用System.Data下的DataSet來展示多列集合的索引的效果

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data;namespace BangWorks.PractcalPattern.Concept.Inder {public class MultiColumnCollectionTest{private static DataSet _Data=new DataSet();public DataSet Data{get { return _Data; }// set { _Data = value; } }public MultiColumnCollectionTest(){_Data.Tables.Add("DataTable");_Data.Tables[0].Columns.Add("Name");_Data.Tables[0].Columns.Add("Age");_Data.Tables[0].Rows.Add(new string[] { "ChenZheRong", "23" });_Data.Tables[0].Rows.Add(new string[] { "JiangShaoHua", "23" });} } }

通過查看定義,我們知道了_Data.Tables所屬的DataTableCollection類,其實是一個實現了索引器的類他擁有Columns這個屬性

Columns字段所屬的DataColumnCollection類的定義。借助最上方的多列集合的索引的效果代碼,我們知道,這個DataColumnCollection類同樣實現了索引器。

?

所以,我們得出一個結論:想要實現多列集合多重索引器的效果,只要遞歸地在實現了索引器的類的屬性或字段中,再次實現索引器即可。

我承認挺拗口的,下面上一段代碼說明。

補充說明:為了方便演示,我們在每個類的構造函數里面自動為他們自身的字段賦一個初值,以便演示。

using System; using System.Collections.Generic; using System.Linq; using System.Text;namespace BangWorks.PractcalPattern.Concept.Inder {public class PeopleColumns{//找出具有相同名稱的人public NameColumns[] this[String strIndex]{get{return Array.FindAll<NameColumns>(_Name, delegate(NameColumns NameRow){return NameRow.Name.StartsWith(strIndex);});}//返回子索引器 }private NameColumns[] _Name;public PeopleColumns(){_Name = new NameColumns[] { new NameColumns("XiaoMing"), new NameColumns("XiaoMing"), new NameColumns("XiaoDong"), new NameColumns("LiSan") };}/// <summary>/// 姓名索引器/// </summary>public class NameColumns{public NameColumns(string Name){this.Name = Name;}public string Name;//為了區別子索引器,我們增加一個名稱屬性,以便突出演示的效果public GenderColumns this[int index]{get { return Sexs[index]; }}public GenderColumns[] Sexs = new GenderColumns[] { new GenderColumns("Man"), new GenderColumns("Female") };/// <summary>/// 性別索引器/// </summary>public class GenderColumns{private string Gender;public GenderColumns(string Gender){this.Gender = Gender;Ages = new string[] { Gender + "1", Gender + "2", Gender + "3" };//這里加上性別的前綴,以便區分年齡 }public string[] Ages;public object this[int index]{get { return Ages[index]; }}}}} }

單元測試

[TestMethod()]public void ItemTest(){PeopleColumns target = new PeopleColumns(); // TODO: 初始化為適當的值string strIndex = "Xiao"; // 獲取姓名字符串開頭為Xiao的人 PeopleColumns.NameColumns[] actual;actual = target[strIndex];Assert.AreEqual<int>(3, actual.Length);//3個符合string[] actualAge = actual[0].Sexs[1].Ages;Assert.AreEqual<int>(3, actualAge.Length);//3個符合Assert.AreEqual<string>("Female1", actualAge[0]);}


作者:kissazi2?
出處:http://www.cnblogs.com/kissazi2/?
本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。

轉載:http://www.cnblogs.com/kissazi2/archive/2013/03/17/2964478.html

總結

以上是生活随笔為你收集整理的多列集合的索引器实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。