C#的索引器

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;

namespace codeTest
{

    class Program
    {

        static void Main(string[] args)
        {
            IndexTest indexname = new IndexTest();
            indexname[0] = "0";
            indexname[1] = "1";
            indexname[2] = "2";
            indexname[3] = "3";
            indexname[4] = "4";
            indexname[5] = "5";
            indexname[6] = "6";
            indexname[7] = "7";
            indexname[8] = "8";
            indexname[9] = "9";
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine(indexname[i]);
            }

            Console.WriteLine(indexname["1"]);
            Console.WriteLine(indexname["2"]);
            Console.WriteLine(indexname["6"]);
            IndexTest1 indextest1 = new IndexTest1();
            Console.WriteLine(indextest1[1]);
            Console.WriteLine(indextest1[2]);
            Console.WriteLine(indextest1[3]);
            Console.ReadLine();
        }

        public class IndexTest
        {
            string[] indexName;
            public IndexTest()
            {
                indexName = new string[10] { "", "", "", "", "", "", "", "", "", "" };
            }

            public string this[int index]
            {
                get
                {
                    string tmp;
                    if (index >= 0 && index <= 10)
                    {
                        tmp = indexName[index];
                    }
                    else
                    {
                        tmp = "";
                    }
                    return tmp;
                }
                set
                {
                    if (index >= 0 && index <= 10)
                    {
                        indexName[index] = value;
                    }
                }
            }

            public int this[string name]
            {
                get
                {
                    int index = 0;
                    while (index < indexName.Length)
                    {
                        if (indexName[index] == name)
                        {
                            return index;
                        }
                        index++;
                    }

                    return -1;
                }
            }

        }

        public interface IIndexTest
        {
            int this[int index]
            {
                get;
                set;
            }
        }

        public class IndexTest1 : IIndexTest
        {
            int[] array = new int[5] { 1, 2, 3, 4, 5 };

            public int this[int index]
            {
                get
                {
                    return array[index];
                }
                set
                {
                    array[index] = value;
                }
            }
        }

    }

}
时间: 2024-08-07 21:17:29

C#的索引器的相关文章

C#之索引器

实际中不使用这个东西,只做了解 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 索引器 { class Program { static void Main(string[] args) { person p = new person(); p[0] = 1; p[1] = 2; p[2] =

C# 索引器

索引器允许累或结构的实例像数组一样进行索引. 当你定义一个索引器时,该类的行为就会像一个虚拟数组,你可以使用数组访问运算符([]) 来访问该类的实例. 以为所引起语法如下: element-type this[int index] { // get 访问器 get { // 返回 index 指定的值 } // set 访问器 set { // 设置 index 指定的值 } } //示例代码如下: class SampleCollection<T> { private T[] arr = n

索引器的使用

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 索引器的使用 { class Program { static void Main(string[] args) { //int[] nums = { 1, 2, 3, 4, 5 }; //Console.WriteLine(nums[2]); P

索引器(C# 编程指南)

索引器(C# 编程指南) Visual Studio 2015 其他版本 索引器允许类或结构的实例就像数组一样进行索引. 索引器类似于属性,不同之处在于它们的取值函数采用参数. 在下面的示例中,定义了一个泛型类,并为其提供了简单的 get 和 set 取值函数方法(作为分配和检索值的方法). Program 类创建了此类的一个实例,用于存储字符串. C# class SampleCollection<T> { // Declare an array to store the data elem

18._4索引器概述及声明

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _18._4索引器概述及声明 { public class Clerk { private string name; public string Name { get { return name; } set { name = value; } }

索引器实现

索引器允许类或者结构的实例按照与数组相同的方式进行索引取值,索引器与属性类似,不同的是索引器的访问是带参的. 索引器和数组比较: (1)索引器的索引值(Index)类型不受限制 (2)索引器允许重载 (3)索引器不是一个变量 索引器和属性的不同点 (1)属性以名称来标识,索引器以函数形式标识 (2)索引器可以被重载,属性不可以 (3)索引器不能声明为static,属性可以 代码实现: 1 //普通索引器 2 public class SimpleClass 3 { 4 string[] arr

《Inside C#》笔记(六) 属性、数组、索引器

一 属性 a) 属性可用于隐藏类的内部成员,对外提供可控的存取接口.属性相当于有些语言的getter.setter方法,只是使用起来更加方便一点,而且查看对应的IL码可以看到,属性的本质也确实是方法. b) 通过只提供get,可以让属性只读.只写属性也可以,但没有用过. c) 属性除了用来控制对类成员的访问外,还可以在get或set的时候通过编码进行一些附加的动作. d) 属性也可以被继承.重写. 二 数组 a) 在C#中,所有数组都继承自System.Array类.数组也是对象,所以声明的数组

C#索引器:在集合或数组中取出某一个元素 举例 _【转】

Garmmar: [访问修饰符] 数据类型 this[参数列表] { get { 获取索引器的内容 } set { 设置索引器的内容 } } Eg: 1 <span style="font-size:14px;">using System; 2 using System.Collections.Generic; 3 using System.Text; 4 5 namespace IndexerUsing 6 { 7 class Photo 8 { 9 10 private

接口、索引器、Foreach的本质(学习笔记)

接口 什么是接口? 接口代表一种能力,和抽象类类似但比抽象类的抽象程度更高! 接口的定义: 1 public interface IEat//定义一个接口 2 { 3 void Eat(string food);//为该接口定义一种能力 4 } 接口的定义 从上边的例子中我们可以看到,接口中的方法是没有方法体的甚至连访问修饰符都没有.而且在接口中只能有方法.属性.索引器及事件! 接口的使用: 1 public class Dog:IEat //Dog类实现IEat接口 2 { 3 //Dog类实

public animal this[int index]|索引器的使用

学习如何使用索引器,索引器的使用是public 类型 this[int index]{get{};set{}} ,访问通过类的实例(对象)加[i], 例如animal[i],就像访问数组一样,其实就是类的数组访问的使用书写. 使用详情请看msdn. 例子如下: class IndexerClass { private int[] arr = new int[100]; public int this[int index] // Indexer declaration { get { // Che