1.索引器声明
索引器的声明方式与属性相似,格式为索引器名称 this
后跟 分隔符 [
和 ]
以及单个或多个参数。
value类型 this[key类型 参数名]
{
//访问器
}
//this指向当前实例
public int this[string key]
{
get { return storage.Find(key); }
set { storage.SetAt(key, value); }
}
//Expression-bodied表达式声明法(读写索引器)
using System;
using System.Collections.Generic;
public class Sports
{
private string[] types = { "Baseball", "Basketball", "Football",
"Hockey", "Soccer", "Tennis",
"Volleyball" };
public string this[int i]
{
get => types[i];
set => types[i] = value;
}
}
//Expression-bodied表达式声明法(只读索引器)
public T this[int i] => arr[i];
2.访问器
类似于属性,索引器分为读写、只读和只写索引器。
//get
var item = someObject["key"];
//set
someObject["AnotherKey"] = item;
3.接口中的索引器
接口访问器不使用修饰符。
接口访问器通常没有实现,仅指示索引器为读写、只读还是只写。可以为接口中定义的索引器提供实现,但这种情况非常少。
public interface ISomeInterface
{
//...
// Indexer declaration:
string this[int index]
{
get;
set;
}
}
4.重载
索引器支持重载。
索引器的签名由其形参的数目和形参的类型所组成,不包含索引器的类型或形参的名称。
5.修饰符
索引器支持 abstract、new、override、sealed、virtual
修饰符。
原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/csharp/csharplang/8203.html