访问没有对象名和属性名的属性
本文关键字:属性 对象 访问 | 更新日期: 2023-09-27 18:24:58
通常,如果我需要Accces类属性,那么我以前写objectname.properties名称(tempRecord),但为什么不写objectname.properties名称
通常,如果我需要Accces类属性,那么我以前写objectname.properties名称(tempRecord),但它是如何在没有写objectname.properties名称的情况下工作的
class TempRecord
{
private float[] temps = new float[10] { 56.2F, 56.7F, 56.5F, 56.9F, 58.8F,
61.3F, 65.9F, 62.1F, 59.2F, 57.5F };
private int vps;
public float this[int index]
{
get
{
return temps[index];
}
set
{
temps[index] = value;
}
}
public int mava
{
set
{
vps = value;
}
get
{
return vps + vps;
}
}
}
class MainClass
{
static void Main()
{
TempRecord tempRecord = new TempRecord();
tempRecord.mava = 4;
// Usually If I Need Accces Class properties , Than I Used To Write objectname.properties name(tempRecord) ,
//But How Come Here It Work's Without Writing objectname.properties name
tempRecord[3] = 58.3F; // Here Without Writing objectname.properties name
tempRecord[5] = 60.1F; // here Without Writing objectname.properties name
for (int i = 0; i < 10; i++)
{
System.Console.WriteLine("Element #{0} = {1}", i, tempRecord[i]);
}
System.Console.WriteLine("Press any key to exit.");
System.Console.ReadKey();
}
}
答案是Indexers (C#)
索引器是语法上的便利,使您能够创建客户端应用程序可以作为数组访问的类、结构或接口。
索引器最常见的实现类型是封装内部集合或数组。例如,假设您有一个名为TempRecord的类,它表示Farenheit中在24小时内10个不同时间记录的温度。
该类包含一个名为"temps"的数组,类型为float,用于表示温度,以及一个DateTime
,用于表示记录温度的日期。
通过在此类中实现索引器,客户端可以将TempRecord
实例中的温度访问为float temp = tr[4]
,而不是float temp = tr.temps[4]
。
public int this[int index] // Indexer declaration
{
// get and set accessors
}