以下为个人理解,不喜勿喷:
索引器主要包含三个知识点:
1.索引器是针对于数组的属性
C#中属性是针对于字段的,通过set和get限制字段的访问与赋值。
同样,索引器也具有set和get,可以通过set和get限制对数组的访问与赋值。
2.索引器能够建立类与类内数组的索引
为便于解释,我们先建立一个包含数组a和b的类c
class C
{ public int[]a=new int[5];
public int[]b=new int[5];
public int this[int index]
{
get{return a[index];}
set{a[index]=value;}
}
}
在没有建立索引器时,要访问a[1]我们需要c.a[0],但在建立索引器之后,我们可以通过c[0]直接访问a[0],代码中建立了数组a与类c的索引,需要注意的是,我们可以建立a与c的索引,也可以建立b与c的索引,但是不能同时建立a,b与c的索引(这也很好理解,假定同时建立了a,b与c的索引,那么c[0]代表的是a[0]还是b[0]呢?)
3.索引器可以重载
private string[] namelist = new string[size];
public string this[int index]
{
get
{
string tmp;
if( index >= 0 && index <= size-1 )
{
tmp = namelist[index];
}
else
{
tmp = "";
}
return ( tmp );
}
set
{
if( index >= 0 && index <= size-1 )
{
namelist[index] = value;
}
}
}
public int this[string name]
{
get
{
int index = 0;
while(index < size)
{
if (namelist[index] == name)
{
return index;
}
index++;
}
return index;
}
}
代码摘自菜鸟教程-C#教程-C#索引器-重载索引器,网址:C# 索引器(Indexer) | 菜鸟教程 (runoob.com)
这个例子(只放了索引器和数组)中就重载了索引器,使访问时既可以c[0]通过索引号0访问,也可以通过c["name"]索引值访问。
另外,索引器还可以多参,似乎多个也是用来指定访问的,类似于重载中提到的,多参我也不太懂,就不写了。
还有一个问题就是:一个类只能与一个数组建立索引吗?即使有多个不同类型的数组存在?文章来源:https://www.toymoban.com/news/detail-408127.html
希望大佬帮忙解答一下,感谢。文章来源地址https://www.toymoban.com/news/detail-408127.html
到了这里,关于C# 索引器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!