C#基础加强(1)之索引器

索引器

介绍

索引器,初学者可能听起来有些陌生,但其实我们经常会用到它,例如:

// 字符串的索引器
string str = "hello world";
char c = str[4]; // 获取到字符串中索引为 4 的字符

// 字典的索引器
var info = new Dictionary<string,string>();
info.Add("name1","张三");
// 从字典中通过索引器获取到 key 为 name1 的值
string name1 = info["name1"];

索引器的创建

看如下实体类:

public class Person
{
    private string _value;
    // 索引器
    public string this[int i, int j]
    {
        get
        {
            Console.WriteLine(i + "" + j + " from get");
            return _value;
        }
        set
        {
            Console.WriteLine(i + "" + j + " from set");
            this._value = value;
        }
    }
}

在该类中创建了一个索引器,可以通过索引器对 Person 类中的 hobbies 字段进行操作,如下:

var person = new Person();
// 给 person 对象中的 hobbies 列表属性前三个索引位置插入数据
person[0,0] = "吃饭";
person[1,0] = "睡觉";
person[2,0] = "打豆豆";
person.Hobbies.ForEach(h => { Console.WriteLine(h); });
/*
吃饭
睡觉
打豆豆
 */

// 获取 hobbies 列表属性前两个元素
var hobbyStr = person[0,2];
Console.WriteLine(hobbyStr);
/*
吃饭,睡觉
 */

相关面试题

1、为什么字符串只能 char c = s[5]; ,而不能 s[5] = 'a'; ?

因为字符串类的索引只读,如下:

[__DynamicallyInvokable]
[IndexerName("Chars")]
public extern char this[int index] { [SecuritySafeCritical, __DynamicallyInvokable, MethodImpl(MethodImplOptions.InternalCall)] get; }

2、C# 中索引器是不是只能根据数字索引?是否允许多个索引器参数?

  • 不是只能根据数字索引,例如上面介绍示例中的字典就可以使用字符串。
  • 允许多个索引器参数,如上面的 Person 类。

转载于:https://www.cnblogs.com/zze46/p/10703708.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值