小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

(教學(xué)思路 C#之類(lèi)六)索引器

 uu2233 2012-12-17

        本節(jié)課我們來(lái)學(xué)習(xí)索引器,索引器的功能類(lèi)似于屬性,它也有一對(duì)get和set訪(fǎng)問(wèn)器,只不過(guò)屬性是用來(lái)封裝字段的,而索引器是利用訪(fǎng)問(wèn)器來(lái)有條件的來(lái)控制類(lèi)中的數(shù)組類(lèi)成員如數(shù)組和集合,get和set訪(fǎng)問(wèn)器的用法與屬性一致,這里不做過(guò)多的講解,首先我們定義一個(gè)int類(lèi)型的數(shù)組a,觀察一下索引器的具體語(yǔ)法:

   int [] a={1,2,3};//類(lèi)中的數(shù)組也應(yīng)該定義為私有變量,對(duì)外只提供索引器進(jìn)行對(duì)數(shù)組的訪(fǎng)問(wèn)

 public int  this[int index]   //注意在定義索引器時(shí)要與所封裝的數(shù)組類(lèi)型一致。
        {
            get
            {
                return a[index];//通過(guò)get訪(fǎng)問(wèn)器,在外部類(lèi)通過(guò)索引器訪(fǎng)問(wèn)數(shù)組時(shí),直接給出index值,再通過(guò)index值作為數(shù)值的索引值得到數(shù)組的元素值
            }
            //使用set訪(fǎng)問(wèn)器,可以限制不符合條件的數(shù)值不許給數(shù)組a賦值
            set
            {
                a[index]=value;

            }
        }

      其中,index作為訪(fǎng)問(wèn)int型數(shù)組的索引值,索引值的數(shù)值類(lèi)型可以是整型,也可以為string類(lèi)型,這主要是取決于索引器所封裝的對(duì)象的類(lèi)型,當(dāng)封裝的對(duì)象是哈希表時(shí),索引值index的數(shù)據(jù)類(lèi)型就可以是string型,即將索引當(dāng)成是哈希表的鍵。this關(guān)鍵字用于定義索引器,value關(guān)鍵字代表由set索引器獲得的值。在使用索引器時(shí)采用“類(lèi)的對(duì)象[索引值]”的方式進(jìn)行對(duì)數(shù)組的訪(fǎng)問(wèn),下面我們來(lái)看一個(gè)簡(jiǎn)單的實(shí)例,在本例中定義了一個(gè)student類(lèi),類(lèi)中有一個(gè)存放五名學(xué)生成績(jī)的數(shù)組CJ,同時(shí)定義了一個(gè)索引器目的是封裝數(shù)組CJ,同時(shí)在第三方類(lèi)中使用索引器的set訪(fǎng)問(wèn)器對(duì)給數(shù)組CJ賦值起到有條件的限制。


 1 //定義了一個(gè)學(xué)生類(lèi),其中CJ數(shù)組記錄了學(xué)生的成績(jī)
 2    class Student
 3    {
 4        //數(shù)組CJ定義了五個(gè)學(xué)生的成績(jī)。
 5        int[] CJ = 8172636495 };
 6        //定義一個(gè)索引器供外部類(lèi)訪(fǎng)問(wèn)CJ數(shù)組
 7        public int this[int Xh]
 8        {
 9            get
10            {    //返回索引值為學(xué)號(hào)-1的數(shù)組CJ的元素值,即學(xué)生的成績(jī)
11                return CJ[Xh - 1];
12            }

13            //使用set訪(fǎng)問(wèn)器,限制不符合條件的數(shù)值不許給數(shù)組CJ賦值
14            set
15            {   //當(dāng)外部給數(shù)組的元素賦值時(shí),先判斷值的條件,滿(mǎn)足條件時(shí),將value賦值給索引值為學(xué)號(hào)-1的成績(jī)數(shù)組CJ的元素。
16                if (value > 100 || value < 0)
17                    Console.WriteLine("學(xué)生的分?jǐn)?shù)應(yīng)在0到100之間");
18                else
19                    CJ[Xh - 1= value;
20            }

21        }

22    }

23    class Program
24    {
25        static void Main(string[] args)
26        {
27            
28            Console.Write("請(qǐng)輸入查詢(xún)成績(jī)的學(xué)生學(xué)號(hào)1-5號(hào):");
29            int xh = int.Parse(Console.ReadLine());
30
31            //創(chuàng)建一個(gè)student類(lèi)的實(shí)例對(duì)象class1班級(jí)1.
32            Student class1 = new Student();
33            //使用“對(duì)象[索引值]”的方式得到student類(lèi)中數(shù)組CJ的元素值。
34            Console.WriteLine(class1[xh]);
35
36            //如果想給數(shù)組的元素賦值時(shí),就使用到了set訪(fǎng)問(wèn)器,先對(duì)xgcj進(jìn)行判斷,再賦值。
37            Console.Write("請(qǐng)輸入修改成績(jī)的學(xué)生學(xué)號(hào)1-5號(hào):");
38            int xgxh = int.Parse(Console.ReadLine());
39            Console.Write("請(qǐng)輸入修改的成績(jī):");
40            int xgcj = int.Parse(Console.ReadLine());
41            
42            //賦值也使用對(duì)象【索引值】的方式
43            class1 [xgxh ]=xgcj;
44            Console.WriteLine("修改后的學(xué)生成績(jī)?yōu)椋?/span>"+ class1[xgxh]);
45
46            Console.WriteLine("***********************************");
47          
48            //當(dāng)給數(shù)組中第4個(gè)元素不符合條件的值時(shí),就會(huì)執(zhí)行set語(yǔ)句中的if的語(yǔ)句塊,
49            //即提示出錯(cuò)誤提示。
50            class1[4= 102;
51         
52        }

53

 

運(yùn)行結(jié)果如下:請(qǐng)輸入查詢(xún)成績(jī)的學(xué)生學(xué)號(hào)1-5號(hào):4
64
請(qǐng)輸入修改成績(jī)的學(xué)生學(xué)號(hào)1-5號(hào):4
請(qǐng)輸入修改的成績(jī):78
修改后的學(xué)生成績(jī)?yōu)椋?8
***********************************
學(xué)生的分?jǐn)?shù)應(yīng)在0到100之間
請(qǐng)按任意鍵繼續(xù). . .

          請(qǐng)同學(xué)們注意代碼第43行,要記住當(dāng)一個(gè)類(lèi)定義了索引器后,想訪(fǎng)問(wèn)數(shù)組的值,就可以把類(lèi)的對(duì)象名想像成數(shù)組名,像數(shù)組通過(guò)索引賦值和取值一樣,這樣能更有助于同學(xué)們記住索引器的用法。下面我們來(lái)看一下用索引器封裝哈希表的用法實(shí)例:


 1  //定義了一個(gè)學(xué)生類(lèi),其中CJ數(shù)組記錄了學(xué)生的成績(jī)
 2    class Student
 3    {
 4        //數(shù)組CJ定義了五個(gè)學(xué)生的成績(jī)。
 5        Hashtable CJ = new Hashtable();
 6
 7
 8        //定義一個(gè)索引器供外部類(lèi)訪(fǎng)問(wèn)CJ,學(xué)生姓名為索引值
 9        public string  this[string  Name]
10        {
11            get
12            {    //通過(guò)傳入的哈希表的鍵,得到值。
13                return CJ[Name].ToString ();
14            }

15       
16            set
17            {   
18                   //給哈希表賦值的兩種方式。
19                    CJ[Name] = value;
20                   // CJ.Add(Name,value );
21            }

22        }

23    }

24    class Program
25    {
26        static void Main(string[] args)
27        {
28            
29            Console.Write("請(qǐng)輸入學(xué)生的姓名:");
30            string name = Console.ReadLine();
31            Console.Write("請(qǐng)輸入此學(xué)生的成績(jī):");
32            string cj = Console.ReadLine();
33
34            //創(chuàng)建一個(gè)student類(lèi)的實(shí)例對(duì)象class1班級(jí)1.
35            Student class1 = new Student();
36           
37            //賦值也使用對(duì)象【索引值】的方式
38            class1 [name]=cj;
39
40            Console.WriteLine("姓名為{0}的學(xué)生成績(jī)?yōu)椋簕1}",name,class1 [name]);
41
42           
43        }

 

 

運(yùn)行如下:請(qǐng)輸入學(xué)生的姓名:咸蛋超人
請(qǐng)輸入此學(xué)生的成績(jī):25
姓名為咸蛋超人的學(xué)生成績(jī)?yōu)椋?5
請(qǐng)按任意鍵繼續(xù). . .

       索引器的具體用法希望通過(guò)這兩個(gè)實(shí)例同學(xué)們能理解好并掌握,當(dāng)然索引器還有更加復(fù)雜的用法,同學(xué)們可以在日后隨著學(xué)習(xí)的深入繼續(xù)深化。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多