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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > C# >内容正文

C#

c#索引器介绍|C#索引器写法|c#索引器例子

發(fā)布時(shí)間:2025/4/16 C# 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c#索引器介绍|C#索引器写法|c#索引器例子 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

??索引器就是特殊的屬性,以下是最簡(jiǎn)單的索引器例子

就是給定索引編號(hào)去找索引編號(hào)對(duì)應(yīng)的值,類(lèi)似屬性的數(shù)組

?public string this[string configName]
??????? {
??????????? get
??????????? {
??????????????? return System.Configuration.ConfigurationManager.AppSettings[configName];
??????????? }

??????? }

?

索引器使得對(duì)象可按照與數(shù)組相似的方法進(jìn)行索引。

get 訪問(wèn)器返回值。set 訪問(wèn)器分配值。

this 關(guān)鍵字用于定義索引器。

value 關(guān)鍵字用于定義由 set 索引器分配的值。

索引器不必根據(jù)整數(shù)值進(jìn)行索引,由您決定如何定義特定的查找機(jī)制。

索引器可被重載。

索引器可以有多個(gè)形參,例如當(dāng)訪問(wèn)二維數(shù)組時(shí)。

C#語(yǔ)言一個(gè)最令人感興趣的地方就是類(lèi)的索引器(indexer)。簡(jiǎn)單說(shuō)來(lái),所謂索引器就是一類(lèi)特殊的屬性,通過(guò)它們你就可以像引用數(shù)組一樣引用自己的類(lèi)。顯然,這一功能在創(chuàng)建集合類(lèi)的場(chǎng)合特別有用,而在其他某些情況下,比如處理大型文件或者抽象某些有限資源等,能讓類(lèi)具有類(lèi)似數(shù)組的行為當(dāng)然也是非常有用的。本文就會(huì)引領(lǐng)你設(shè)置類(lèi)來(lái)采用索引器。但是,首先讓我們概述下屬性這個(gè)概念以便了解些必要的背景知識(shí)。

屬性

  假如你曾經(jīng)用VB6編寫(xiě)過(guò)程序,那么你應(yīng)該很熟悉屬性方法才對(duì),所謂屬性方法其實(shí)就是特殊的類(lèi)成員,它實(shí)現(xiàn)了對(duì)私有類(lèi)域的受控訪問(wèn)。在C#語(yǔ)言中有兩種屬性方法,其一是get,通過(guò)它可以返回私有域的值,其二是set,通過(guò)它就可以設(shè)置私有域的值。比如說(shuō),以下面的代碼為例,其間創(chuàng)建了一個(gè)FirstName屬性,由它控制對(duì)私有類(lèi)成員firstname的訪問(wèn):

class Person {
private string firstname;
public string FirstName {
get {return firstname;}
set {firstname = value;}
}
}

屬性聲明可以如下編碼:
Person p = new Person();
p.FirstName = "Lamont";
Console.WriteLine (p.FirstName);

  如你你所看到的那樣,屬性聲明倒更像是域聲明,只不過(guò)它還聲明了兩個(gè)特殊的成員,按照微軟的說(shuō)法就是所謂的訪問(wèn)函數(shù)(accessor)。當(dāng)某一表達(dá)式的右邊調(diào)用屬性或者屬性用作其他子程序(或者函數(shù))的參數(shù)時(shí)即會(huì)調(diào)用get訪問(wèn)函數(shù)。反之,當(dāng)表達(dá)式左邊調(diào)用屬性并且通過(guò)隱式傳遞value參數(shù)設(shè)置私有域值的情況下就會(huì)調(diào)用set訪問(wèn)函數(shù)。你可以創(chuàng)建只讀屬性,方法是省略set訪問(wèn)函數(shù),這樣任何設(shè)置屬性的嘗試都會(huì)產(chǎn)生編譯錯(cuò)誤。

采用索引器的益處

  說(shuō)了半天咱們轉(zhuǎn)到正題上來(lái),那么為什么我要兜這個(gè)圈子呢?其實(shí),這是因?yàn)轭?lèi)的索引器非常像屬性,從代碼上看也是這樣。以下是具有索引器的類(lèi)示例,通過(guò)索引器會(huì)返回一個(gè)字符串:

class Sample {
public string this [int index] {
get {return "You passed " + index; }
}
}

  注意,這里的屬性名是this,意思是回引類(lèi)的當(dāng)前實(shí)例,參數(shù)列表包含在方括號(hào)而非括號(hào)之內(nèi)。還有,這是一個(gè)只讀索引器。為了把它改成讀/寫(xiě)類(lèi)型,我又添加了一個(gè)set訪問(wèn)函數(shù)。在定義索引器的時(shí)候,你不一定只采用一個(gè)參數(shù)。索引器參數(shù)可以采用任何類(lèi)型,不過(guò)int是通常采用也是最為合理的類(lèi)型。同一類(lèi)中還可能擁有一個(gè)以上的索引器(重載)。

  如上定義了Sample類(lèi)之后,我們就可以把索引器用作某種默認(rèn)的屬性,如下所示:

Sample s = new Sample();
Console.WriteLine(s[55]);

屬性和索引器

   屬性和索引器之間有好些差別:

  類(lèi)的每一個(gè)屬性都必須擁有唯一的名稱,而類(lèi)里定義的每一個(gè)索引器都必須擁有唯一的簽名(signature)或者參數(shù)列表(這樣就可以實(shí)現(xiàn)索引器重載)。

   屬性可以是static(靜態(tài)的)而索引器則必須是實(shí)例成員。

  為索引器定義的訪問(wèn)函數(shù)可以訪問(wèn)傳遞給索引器的參數(shù),而屬性訪問(wèn)函數(shù)則沒(méi)有參數(shù)。

接口

  類(lèi)似數(shù)組的行為常受到程序?qū)崿F(xiàn)者的喜愛(ài),所以你還可以為接口定義索引器,IList和 IDictionary集合接口都聲明了索引器以便訪問(wèn)其存儲(chǔ)的項(xiàng)目。

  在為接口聲明索引器的時(shí)候,記住聲明只是表示索引器的存在。你只需要提供恰當(dāng)?shù)脑L問(wèn)函數(shù)即可,不必包括范圍修飾符。以下代碼把索引器聲明為接口IImplementMe的一部分:

interface IImplementMe {
string this[int index]
{
get;
set;
}

  相應(yīng)實(shí)現(xiàn)的類(lèi)則必須為IimplementMe的索引器具體定義get和set訪問(wèn)函數(shù)。

  以上就是有關(guān)索引器的一些基本概述了。現(xiàn)在你應(yīng)該對(duì)索引器在你的開(kāi)發(fā)中所具有的作用有了較深入的了解。

索引器允許類(lèi)或結(jié)構(gòu)的實(shí)例按照與數(shù)組相同的方式進(jìn)行索引。索引器類(lèi)似于屬性,不同之處在于它們的訪問(wèn)器采用參數(shù)。

在下面的示例中,定義了一個(gè)泛型類(lèi),并為其提供了簡(jiǎn)單的 get 和 set 訪問(wèn)器方法(作為分配和檢索值的方法)。Program 類(lèi)為存儲(chǔ)字符串創(chuàng)建了此類(lèi)的一個(gè)實(shí)例。

class SampleCollection<T>
{
??? private T[] arr = new T[100];
??? public T this[int i]
??? {
??????? get
??????? {
??????????? return arr[i];
??????? }
??????? set
??????? {
??????????? arr[i] = value;
??????? }
??? }
}

// This class shows how client code uses the indexer
class Program
{
??? static void Main(string[] args)
??? {
??????? SampleCollection<string> stringCollection = new SampleCollection<string>();
??????? stringCollection[0] = "Hello, World";
??????? System.Console.WriteLine(stringCollection[0]);

轉(zhuǎn)載于:https://www.cnblogs.com/wangdetian168/archive/2009/03/20/suoyinqi.html

總結(jié)

以上是生活随笔為你收集整理的c#索引器介绍|C#索引器写法|c#索引器例子的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美人体一区二区三区 | 韩国日本中文字幕 | 国产日韩欧美专区 | 巨乳美女被爆操 | 就爱啪啪网 | 欧美熟妇激情一区二区三区 | av鲁丝一区鲁丝二区鲁丝 | 亚洲一区二区偷拍 | 精品一区二区久久 | 日本中文字幕二区 | 色综合中文网 | 精品电影一区二区 | 福利色导航| 91免费看片 | 777精品视频 | 欧美视频在线观看免费 | 精品国产一级久久 | 国产精品久久久久久久天堂 | 欧美熟妇交换久久久久久分类 | 91国语对白 | 美女隐私无遮挡免费 | 午夜男人影院 | 亚洲av成人无码一区二区三区在线观看 | 91色伦 | 日本一区二区三区久久 | 老地方在线观看免费动漫 | www.久久| 国产精品久久久久久久久久久久久 | 国产福利视频一区二区三区 | 成人av影院| 香港三日本三级少妇66 | 人妻射精一区二区 | 自拍偷拍综合 | 国产4区| 日韩特级 | 亚洲欧美一区二区视频 | 男ji大巴进入女人视频 | 嫩草午夜少妇在线影视 | 黄色成年视频 | 亚洲人在线播放 | 国产一级在线播放 | 久久av无码精品人妻系列试探 | 成人欧美视频在线观看 | 伊人黄色| 青青草香蕉 | av免费在线播放 | 日韩欧美的一区二区 | 亚洲精品小说 | 看黄网站在线 | 免费看欧美黑人毛片 | 日韩精品一区不卡 | a级黄色片免费看 | 男女国产精品 | 欧美一区二区三区视频在线观看 | 国产午夜精品理论片 | 卡通动漫av | 天堂网男人| 日韩中文第一页 | 欧美精品色视频 | 性欧美18—19sex性高清 | 啪啪官网 | 免费观看在线观看 | 隔壁邻居是巨爆乳寡妇 | 黄色av地址 | 奇米色综合 | 精品区 | a国产免费 | 欧美亚洲日本一区 | 精品熟女一区二区 | 美女屁股无遮挡 | 爱爱视频网站免费 | 性涩av | 日韩欧美在线不卡 | 亚洲av无码久久精品色欲 | 青青成人网| 国产精品久久久久久久久久久久午夜片 | 蝌蚪网在线视频 | 玉米地疯狂的吸允她的奶视频 | 日本中文在线播放 | 男女深夜福利 | 久久精品成人一区二区三区蜜臀 | 免费观看的av | 九九热只有精品 | 久章草在线观看 | 涩涩网站在线看 | 亚洲国产成人自拍 | av私库在线观看 | 亚洲专区第一页 | 精品人妻少妇嫩草av无码 | 青青视频一区二区 | 九热这里只有精品 | 国产亚洲视频一区 | 日韩国产欧美视频 | 成人做爰视频www网站小优视频 | 精品国产综合区久久久久久 | 激情小视频 | 黑人巨大精品欧美 | 99re在线视频免费观看 | heyzo国产|