C#索引器

?

索引器允許類或者結構的實例按照與數組相同的方式進行索引取值,索引器與屬性類似,不同的是索引器的訪問是帶參的。

索引器和數組比較:

(1)索引器的索引值(Index)類型不受限制

(2)索引器允許重載

(3)索引器不是一個變量

索引器和屬性的不同點

(1)屬性以名稱來標識,索引器以函數形式標識

(2)索引器可以被重載,屬性不可以

(3)索引器不能聲明為static,屬性可以

?

一個簡單的索引器例子

using System;
using System.Collections;

public
class IndexerClass {private string[] name = new string[2];//索引器必須以this關鍵字定義,其實這個this就是類實例化之后的對象public string this[int index]{//實現索引器的get方法get{if (index < 2){return name[index];}return null;}//實現索引器的set方法set{if (index < 2){name[index] = value;}}} } public class Test {static void Main(){//索引器的使用IndexerClass Indexer = new IndexerClass();//“=”號右邊對索引器賦值,其實就是調用其set方法Indexer[0] = "張三";Indexer[1] = "李四";//輸出索引器的值,其實就是調用其get方法Console.WriteLine(Indexer[0]);Console.WriteLine(Indexer[1]);} }

?以字符串作為下標,對索引器進行存取

public class IndexerClass
{//用string作為索引器下標的時候,要用Hashtableprivate Hashtable name = new Hashtable();//索引器必須以this關鍵字定義,其實這個this就是類實例化之后的對象public string this[string index]{get { return name[index].ToString(); set { name.Add(index, value); }}
}
public class Test
{static void Main(){IndexerClass Indexer = new IndexerClass();Indexer["A0001"] = "張三";Indexer["A0002"] = "李四";Console.WriteLine(Indexer["A0001"]);Console.WriteLine(Indexer["A0002"]);}
}

?索引器的重載

public class IndexerClass
{private Hashtable name = new Hashtable();//1:通過key存取Valuespublic string this[int index]{get { return name[index].ToString(); }set { name.Add(index, value); }}//2:通過Values存取keypublic int this[string aName]{get{//Hashtable中實際存放的是DictionaryEntry(字典)類型,如果要遍歷一個Hashtable,就需要使用到DictionaryEntryforeach(DictionaryEntry d in name){if (d.Value.ToString() == aName){return Convert.ToInt32(d.Key);}}return -1;}set{name.Add(value, aName);}}
}
public class Test
{static void Main(){IndexerClass Indexer = new IndexerClass();//第一種索引器的使用Indexer[1] = "張三";//set訪問器的使用Indexer[2] = "李四";Console.WriteLine("編號為1的名字:" + Indexer[1]);//get訪問器的使用Console.WriteLine("編號為2的名字:" + Indexer[2]);Console.WriteLine();//第二種索引器的使用Console.WriteLine("張三的編號是:" + Indexer["張三"]);//get訪問器的使用Console.WriteLine("李四的編號是:" + Indexer["李四"]);Indexer["王五"] = 3;//set訪問器的使用Console.WriteLine("王五的編號是:" + Indexer["王五"]);}
}

?多參索引器

using System;
using System.Collections;//入職信息類
public class EntrantInfo
{//姓名、編號、部門private string name;private int number;private string department;public EntrantInfo(){}public EntrantInfo(string name, int num, string department){this.name = name;this.number = num;this.department = department;}public string Name{get { return name; }set { name = value; }}public int Num{get { return number; }set { number = value; }}public string Department{get { return department; }set { department = value; }}
}//聲明一個類EntrantInfo的索引器
public class IndexerForEntrantInfo
{private ArrayList ArrLst;//用于存放EntrantInfo類public IndexerForEntrantInfo(){ArrLst = new ArrayList();}//聲明一個索引器:以名字和編號查找存取部門信息public string this[string name, int num]{get{foreach (EntrantInfo en in ArrLst){if (en.Name == name && en.Num == num){return en.Department;}}return null;}set{//new關鍵字:C#規定,實例化一個類或者調用類的構造函數時,必須使用new關鍵ArrLst.Add(new EntrantInfo(name, num, value));}}//聲明一個索引器:以編號查找名字和部門public ArrayList this[int num]{get{ArrayList temp = new ArrayList();foreach (EntrantInfo en in ArrLst){if (en.Num == num){temp.Add(en);}}return temp;}}//還可以聲明多個版本的索引器...
}public class Test
{static void Main(){IndexerForEntrantInfo Info = new IndexerForEntrantInfo();//this[string name, int num]的使用Info["張三", 101] = "人事部";Info["李四", 102] = "行政部";Console.WriteLine(Info["張三", 101]);Console.WriteLine(Info["李四", 102]);Console.WriteLine();//this[int num]的使用foreach (EntrantInfo en in Info[102]){Console.WriteLine(en.Name);Console.WriteLine(en.Department);}}
}

?

?



原文鏈接:http://www.cnblogs.com/ArmyShen/archive/2012/08/27/2659405.html

轉載于:https://www.cnblogs.com/Percy_Lee/p/5160131.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/257759.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/257759.shtml
英文地址,請注明出處:http://en.pswp.cn/news/257759.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

獲取訪客進站關鍵詞_拼多多訪客突然下降是為什么?拼多多訪客突然暴漲又是怎么回事?...

在當下這個互聯網時代&#xff0c;可以說流量就代表這金錢。這一點在做電商的商家那里表現的就更為直觀了&#xff0c;如果你做了一個拼多多的店鋪&#xff0c;之前店鋪的流量一直都比較好&#xff0c;而現在拼多多店鋪的流量忽然下降了&#xff0c;那么店鋪中的銷售額就會受到…

微信開發之 二維碼生成類庫

最近weiphp 二次開真的有點累&#xff0c;漏洞百出。代碼維護代價有點高。 <?php /*** Created by PhpStorm.* User: bin* Date: 15-1-16* Time: 上午9:48*/ namespace Home\Common;// 微信處理類 set_time_limit(30); class Weixin{//構造方法static $qrcode_url "h…

通過Matlab實現離散序列卷積和

前言 年輕人&#xff0c;你對數學一無所知&#xff0c;你只是習慣了而已。—馮諾伊曼 Young man, in mathematics you dont understand things. You just get used to them.—John von Neumann。 一、卷積和是什么&#xff1f; 卷積的本質是描述一個瞬時動作&#xff08;激勵…

Ansible 五(inventory文件 主機清單)

Ansible 五&#xff08;inventory文件 主機清單&#xff09;Ansible 可同時操作屬于一個組的多臺主機,組和主機之間的關系通過 inventory 文件配置. 默認的文件路徑為 /etc/ansible/hosts除默認文件外,你還可以同時使用多個 inventory 文件(后面會講到),也可以從動態源,或云上…

python series用法_如何使用Python中的Series字典創建數據框?

數據框是一種二維數據結構&#xff0c;其中數據以表格格式存儲&#xff0c;以行和列的形式。它可以可視化為SQL數據表或excel工作表表示形式。可以使用以下構造函數創建它-pd.Dataframe(data, index, columns, dtype, copy)讓我們了解如何使用Series字典創建數據框。系列是“熊…

[轉載]android設置全屏和無標題

先介紹去掉標題欄的方法&#xff1a; 第一種&#xff1a;也一般入門的時候經常使用的一種方法 requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉標題欄注意這句一定要寫在setContentView()方法的前面&#xff0c;不然會報錯的 第二種&#xff1a;在AndroidManifest.xml文…

mac電腦下Tomcat和Apach配置流程(超詳細)

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 前言 本章介紹在mac 電腦下如何配置Tomcat、Apach等環境 一、Apache介紹及配置 1.XAMPP安裝 為了更好的進行各項軟件服務的配置&#xff0c;引入快捷腳本工具——XMAPP。…

MVC 分頁

后臺代碼: using Webdiyer.WebControls.Mvc; 1 public ActionResult Index(int id 1)2 {3 int pageIndex id;4 int count;5 int pageSize 7;6 7 List<News> newsList 8 newsSer.QueryByPage…

cvc 降噪_耳機降噪功能這么多,說說什么是ANC、ENC、CVC、DSP降噪

降噪功能對耳機的作用很重要&#xff0c;一是減少噪音&#xff0c;避免過度放大音量&#xff0c;從而減少對耳朵的損害。二是過濾噪音從而提高音質和通話質量。降噪可分為被動式降噪和主動式降噪。被動式降噪也就是物理降噪&#xff0c;被動式降噪是指利用物理特性將外部噪聲與…

RPC 和 RESTful

2019獨角獸企業重金招聘Python工程師標準>>> to do ... 轉載于:https://my.oschina.net/u/2002769/blog/1505410

[linx] ubuntu網絡重啟命令

/etc/init.d/networking restart #這種方式必須有/etc/network/interface文件 ifconfig eth0 down #直接重啟網卡 ifconfig eth0 up 轉載于:https://www.cnblogs.com/fantasy01/p/4229734.html

密碼學入門1——凱撒密碼和三重DES加解密

實驗目的 1、完成第一個入門加解密——凱撒密碼 2、完成當下較為流行的三重DES加解密技術 3、熟悉所學的實際運用方向 實驗準備 硬件&#xff1a;計算機或筆記本電腦 操作系統&#xff1a;Mac操作系統 IDE環境&#xff1a;Eclipse 程序語言&#xff1a;Java 一、實驗基本…

老李談JVM內存模型

老李談JVM內存模型 poptest是國內唯一一家培養測試開發工程師的培訓機構&#xff0c;以學員能勝任自動化測試&#xff0c;性能測試&#xff0c;測試工具開發等工作為目標。如果對課程感興趣&#xff0c;請大家咨詢qq&#xff1a;908821478&#xff0c;咨詢電話010-84505200。 J…

emqx 使用端口_數據傳輸、存儲、展現,EMQ X + TDengine 搭建 MQTT 物聯網數據可視化平臺...

物聯網數據采集涉及到大量設備接入、海量的時序數據傳輸&#xff0c;EMQ X 消息中間件與 TDengine 大數據平臺的組合技術棧完全能夠勝任場景中的海量時間序列監測數據的傳輸、存儲和計算。數據入庫后&#xff0c;往往需要其他方式如數據可視化系統將數據按照規則統計、展現出來…

站點CSS樣式不起作用,或僅僅有一部分起作用?隨手記

事件&#xff1a;網頁中使用了相同的樣式&#xff0c;下半部分正常顯示&#xff0c;上半部分樣式所有丟失不能顯示。解決&#xff1a;改動了相應的CSS樣式文件的編碼 這個是最沒有想到的解決的方法。怎樣調試&#xff1a;通過右鍵頁面查看編碼為UTF-8 或 GBK 看到樣式正常顯示&…

大數據--循序漸進的大數據(2)

一、Hdfs 架構 訪問 (1) ----nameNode(2) |||dataNode每隔一段時間secondaryNameNode會將fsimage和edits進行合并產生心得fsimage&#xff1b;1、Hdfs 適用場景數據密集型并行計算計算密集并行計算2、不適合的場景HDFS不合適大量小文件的儲存HDFS適用于高吞吐量&#xff0c;…

virtualbox 啟動時Kernel driver not installed (rc=-1908) 錯誤的解決方法

virtualbox 啟動時Kernel driver not installed (rc-1908) 錯誤的解決方法 網上的方法各種各樣&#xff0c;結果繞山繞水一點用沒有&#xff0c;就下面這句就行 sudo /Library/Application\ Support/VirtualBox/LaunchDaemons/VirtualBoxStartup.sh restart昨天更新了下系統&a…

ios開發之-繼承的實現運用

// // main.m // 繼承 ////#import <Foundation/Foundation.h> #import "Animal.h" #import "Cat.h" #import "Dog.h" #import "FeedMan.h"int main(int argc, const char * argv[]) {// Animal * animal [Animal new]; /…

查找字段 如何 過濾

dm.ADOTbBug 使用Filter 屬性的話&#xff0c;不能包括 查找字段。 方法1 在過濾事件里 使用查找字段。 http://www.itdelphi.com/delphibbs/doc/2001/558361.htm 方法2 就是使用查找字段對應的KeyFields 為字段名。 比如查找字段是 部門名稱&#xff0c;對應的數據集里KeyFiel…

python字符串去頭尾_帶你認識優秀的python代碼

有一串長的字符串names "LI XIA , ZHAO MING ,LAO WANG *,DA XIONG >,LI MEI MEI, CHANG JIANG,LI QIANG,ZHANG WU JI,ZHANG SAN FENG,DU GU QIU BAI,QIAO FENG"。要求&#xff1a;&#xff08;1&#xff09;過濾所有的名字&#xff0c;去掉每個名字左右的空格和…