本文主要介绍C#索引器,它使您能够按语法创建类、结构或接口,以便客户端应用程序可以像访问数组一样访问它们。编译器将生成一个项属性和适当的访问器方法。在主要目标是封装内部集合或数组的类型中,通常会实现索引器。我们来看看具体内容。
一.摘要二。应用场景
目录
索引器使您可以轻松地从语法上创建类、结构或接口,以便客户端应用程序可以像访问数组一样访问它们。编译器将生成一个项目属性(或一个命名属性,如果IndexerNameAttribute存在)和适当的访问器方法。在主要目标是封装内部集合或数组的类型中,通常会实现索引器。例如,假设有一个TempRecord类,它表示在24小时内记录的10个不同点的温度(以华氏度为单位)。该类包含一个float[]类型的temps数组,用于存储温度值。通过在此类中实现索引器,客户端可以以float temp=tempRecord[4]的形式访问TempRecord实例中的温度,而不是float temp=tempRecord.temps[4]。索引器符号不仅简化了客户端应用程序的语法;这也使得该类及其目标更容易被其他开发人员直观地理解。
语法声明:
public int this[int param]
{
get { return array[param];}
set { array[param]=value;}
}
一、概要
这里分享一下用索引器设计封装的角度。场景是一个封装了redis的助手类。在此之前,我们先来看一个简单的官方例子。
使用系统;
类SampleCollectionT
{
//声明一个数组来存储数据元素。
private T[]arr=new T[100];
//定义索引器以允许客户端代码使用[]表示法。
public T this[int i]
{
get { return arr[I];}
set { arr[I]=value;}
}
}
班级计划
{
静态空干管()
{
var string collection=new SampleCollectionstring();
stringCollection[0]='Hello,World ';
控制台。WriteLine(string collection[0]);
}
}
//该示例显示以下输出:
//你好,世界。
redisHelper类的封装(伪代码),好处是不用大费周章设置Redis的db号。
公共类RedisHelper
{
私有静态只读object _ lock obj=new object();
私有静态RedisHelper _ instance
private int dbNum
private RedisHelper() { }
公共静态RedisHelper实例
{
得到
{
if (_instance==null)
{
锁定(_lockObj)
{
if (_instance==null)
{
_ instance=new redis helper();
}
}
}
返回实例;
}
}
public RedisHelper this[int dbid]
{
得到
{
dbNum=dbid
还这个;
}
}
公共空字符串集(字符串内容)
{
控制台。WriteLine($ ' string set to redis db { dbNum },input{ content }。);
}
}
调用:
Redishelper.instance [123]。Stringset(“测试数据”);
运行效果:
关于C#索引器的这篇文章到此为止。有关C#索引器的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。