C#中自定义索引器

介绍:索引运算符([ ])用于索引器(在索引运算符中指定参数来访问数组或集合的元素)。

如下面所示:在索引运算符中指定了 int 类型的数字来(不能超过数组的长度减一)访问 int 数组的元素

// 声明并初始化一个数组
int[] array = {1,2,3};
// 通过索引器访问数组的第一个元素,并赋值给变量 a
int a = array[0];
// 将数值 4 赋值给数组的第二个元素
array[1] = 4;
自定义索引:C#中自定义的索引器不能使用运算符重载语法来实现,但是他可以使用与属性非常相似的语法来实现。

声明:类似于属性可以使用 get 和 set,不同的是,名称部分变成了 this 指定的索引结构(this [ ]),索引结构中设置 索引类型和参数。如 public  A  this[ int index ]{ }

下面给出结构示例:

// 数据类
public class MyIndex
{
	public int curr;
	// 自定义构造函数初始化字段 curr
	public MyIndex(int curr)
	{
		this.curr = curr;
	}
}
public class MyTest
{
	// 私有的 MyIndex 类型的数组 array
	private MyIndex[] array;
	// 自定义构造函数初始化 数组 array
	public MyTest(params MyIndex[] array)
	{
		this.array = array;
	}
	// 自定义索引器,返回数组 array 指定顺序下一位的值,超出则给出默认值
	public MyIndex this[int index]
	{
		get
		{
			if(index+1 < array.Length) return array[index + 1];
			return new MyIndex(0);
		}
		set
		{
			array[index + 1] = value;
		}
	}
	// 只读属性,返回数组 array
	public MyIndex[] MyArray
	{
		get{return array;}
	}
}
下面是调用示例:

MyTest myTest = new MyTest(new MyIndex(1),new MyIndex(2),new MyIndex(3),new MyIndex(4),new MyIndex(5));
// 调用自定义的索引器,返回数组下标为 2 的数据
int result1 = myTest[1].curr; // result1 = 3
// 调用自定义索引器改变数组下标为 4 的数据
myTest[3] = new MyIndex(6);
// 返回数组下标为 4 的数据
int result2 = myTest[3].curr; // result2 = 6
// 调用属性,返回数组下标为 1 的数据
int result3 = myTest.MyArray[1].curr; // result3 = 2



  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值