C# 属性 索引器 委托 事件学习笔记

C# 属性 索引器 委托 事件学习笔记

属性是这样的成员:它们提供灵活的机制来读取、编写或计算私有字段的值。可以像使用公共数据成员一样使用属性,但实际上它们是称为“访问器”的特殊方法。这使得数据在可被轻松访问的同时,仍能提供方法的安全性和灵活性。

在本示例中,类 TimePeriod 存储了一个时间段。类内部以秒为单位存储时间,但提供一个称为 Hours 的属性,它允许客户端指定以小时为单位的时间。Hours 属性的访问器执行小时和秒之间的转换。

class  TimePeriod
{
    
private double seconds;

    
public double Hours
    
{
        
get return seconds / 3600; }
        
set { seconds = value * 3600; }
    }

}


class  Program
{
    
static void Main()
    
{
        TimePeriod t 
= new TimePeriod();

        
// Assigning the Hours property causes the 'set' accessor to be called.
        t.Hours = 24;

        
// Evaluating the Hours property causes the 'get' accessor to be called.
        System.Console.WriteLine("Time in hours: " + t.Hours);
    }

}

索引器允许类或结构的实例按照与数组相同的方式进行索引。索引器类似于属性,不同之处在于它们的访问器采用参数。
在下面的示例中,定义了一个泛型类,并为其提供了简单的 get  set 访问器方法(作为分配和检索值的方法)。Program 类为存储字符串创建了此类的一个实例。

class  SampleCollection < T >
{
    
private T[] arr = new T[100];
    
public T this[int i]
    
{
        
get
        
{
            
return arr[i];
        }

        
set
        
{
            arr[i] 
= value;
        }

    }

}


//  This class shows how client code uses the indexer
class  Program
{
    
static void Main(string[] args)
    
{
        SampleCollection
<string> stringCollection = new SampleCollection<string>();
        stringCollection[
0= "Hello, World";
        System.Console.WriteLine(stringCollection[
0]);
    }

}

索引器概述

  • 索引器使得对象可按照与数组相似的方法进行索引。

  • get 访问器返回值。set 访问器分配值。

  • this 关键字用于定义索引器。

  • value 关键字用于定义由 set 索引器分配的值。

  • 索引器不必根据整数值进行索引,由您决定如何定义特定的查找机制。

  • 索引器可被重载。

  • 索引器可以有多个形参,例如当访问二维数组时。


 

你可能感兴趣的:(C# 属性 索引器 委托 事件学习笔记)