访问没有对象名和属性名的属性

本文关键字:属性 对象 访问 | 更新日期: 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
}
相关文章: