第一篇 .NET高级技术之索引器

本文详细介绍了C#中的索引器概念,包括其内部本质、使用方式及灵活性,如支持非数字索引和多参数索引。通过具体代码示例展示了如何自定义整型和字符串索引,为理解及运用索引器提供了实践指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基础知识补充

索引 器

没有名字 ,索引器的内部本质 (ILSpy的IL模式下看)类型 this[参数]{get;set;}

可以是只读或者只写(在get或者set前加上private)

字符串是只读索引,因此不能对字符串中的某个字符进行从新赋值,即只能char ch = s[5];不能s[5]=‘a’。

开发中自己写的机会很少,一道面试题:C#中索引器是否只能根据数字进行索引?是否允许多个索引器参数?答案:可以进行非数字索引,可以允许多个参数进行索引

using System;

using System.Collections;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace TestConsole

{

    class Program

    {

        static void Main(string[] args)

        {

            MyIntIndex myIntIndex = new TestConsole.MyIntIndex();//整型索引

            string name1 = myIntIndex[1];

            Console.WriteLine(name1);

            Hashtable ht = new Hashtable();

            ht.Add("001", "chizi");

            ht.Add("002", "dandan");

            MyStringIndex myStringIndex = new TestConsole.MyStringIndex(ht);//字符串索引

            string name2 = myStringIndex["001"];

            Console.WriteLine(name2);

            Console.ReadKey();

        }

    }

    class MyStringIndex

    {

        private Hashtable ht;//字符串索引用到哈希表来存放键值对

        public MyStringIndex(Hashtable ht)

        {

            this.ht = ht;

        }

        public string this[string key]

        {

            get

            {

                string name =(string)ht[key];

                return name;

            }

            set

            {

                ht[key] = value;

            }

        }

    }

    class MyIntIndex

    {

        private static string[] name = { "dandan", "chizi", "jianguo" };

        public string this[int index]

        {

            get

            {

                string n = name[index];

                return n;

            }

            set

            {

                name[index] = value;

            }

        }

    }

}

更多技术请关注

 

posted on 2019-05-23 10:51  笨小孩做开发 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/dullbaby/p/10910611.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值