程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> c#索引器詳解示例

c#索引器詳解示例

編輯:C#入門知識

c#索引器詳解示例。本站提示廣大學習愛好者:(c#索引器詳解示例)文章只能為提供參考,不一定能成為您想要的結果。以下是c#索引器詳解示例正文


1、索引器的界說

C#中的類成員可所以隨意率性類型,包含數組和聚集。當一個類包括了數組和聚集成員時,索引器將年夜年夜簡化對數組或聚集成員的存取操作。

界說索引器的方法與界說屬性有些相似,其普通情勢以下:

[潤飾符] 數據類型 this[索引類型 index]

{
    get{//取得屬性的代碼}                                                
    set{ //設置屬性的代碼}
}

潤飾符包含 public,protected,private,internal,new,virtual,sealed,override, abstract,extern.

數據類型是表現將要存取的數組或聚集元素的類型。

索引器類型表現該索引器應用哪一類型的索引來存取數組或聚集元素,可所以整數,可所以字符串;this表現操作本對象的數組或聚集成員,可以簡略把它懂得成索引器的名字,是以索引器不克不及具有效戶界說的稱號。 例如:


class Z
{
        //可包容100個整數的整數集
        private long[] arr = new long[100];
        //聲明索引器
        public long this[int index]
        {
            get
            { //檢討索引規模
                if (index < 0 || index >= 100)
                {
                    return 0;
                }
                else
                {
                    return arr[index];
                }
            }
            set
            {
                if (!(index < 0 || index >= 100))
                {
                    arr[index] = value;
                }
            }
   }

2、索引器的應用

經由過程索引器可以存取類的實例的數構成員,操作辦法和數組類似,普通情勢以下:

對象名[索引]

個中索引的數據類型必需與索引器的索引類型雷同。例如:

Z  z=new  z();
z[0]=100;
z[1]=101;
Console.WriteLine(z[0]);

表現先創立一個對象z,再經由過程索引來援用該對象中的數組元素。

3、接口中的索引器

在接口中也能夠聲明索引器,接口索引器與類索引器的差別有兩個:一是接口索引器不應用潤飾符;二是接口索引器只包括拜訪器get或set,沒有完成語句。拜訪器的用處是指導索引器是可讀寫、只讀照樣只寫的,假如是可讀寫的,拜訪器get或set均不克不及省略;假如只讀的,省略set拜訪器;假如是只寫的,省略get拜訪器。

例如:

public interface IAddress
{
string this[int index]{get;set;}
string Address{get;set;}
string Answer();
}

 表現所聲明的接口IAddress包括3個成員:一個索引器、一個屬性和一個辦法,個中,索引器是可讀寫的。

4、索引器與屬性的比擬

索引器與屬性都是類的成員,語法上異常類似。索引器普通用在自界說的聚集類中,經由過程應用索引器來操作聚集對象就好像應用數組一樣簡略;而屬性可用於任何自界說類,它加強了類的字段成員的靈巧性。

示例


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace suoyin
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] values = { 3,5,7,9};
            int i = values[1];

            Person p1 = new Person();
            p1[1] = "小明";
            Console.WriteLine(p1[1]+p1[2]);

            Console.WriteLine(p1["tom",3,9]);//索引也能夠重載。
            Console.ReadKey();
        }
    }

    class Person
    {
        private string FirstName="年夜毛";
        private string SecondName="二毛";

        public string this[string name, int x, int y]
        {
            get
            {
                return name + x + y;
            }
        }
        public string this[int index]//中括號裡的就是索引。
        {
            get
            {
                if (index == 1)
                {
                    return FirstName;
                }
                else if (index == 2)
                {
                    return SecondName;
                }
                else
                {
                    throw new Exception("這是個毛病的序號啊親!");
                }
            }
            set
            {
                if (index == 1)
                {
                    FirstName = value;
                }
                else if (index == 2)
                {
                    SecondName = value;
                }
                else
                {
                    throw new Exception("這是個毛病的序號啊親!");
                }
            }
        }
    }
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved