属性 索引器(附例子)

属性

[访问修饰符]  数据类型  属性名  

{

      get{};

      set{};            //内置参数 value 用于传递数据

}

  1 using System;
  2 
  3 namespace Example_1
  4 {
  5     class SavingsAccount
  6     {
  7         //用于存储帐户号码、余额和已获利息的类字段。
  8         private int _accountNumber;
  9         private double _balance;
 10         private double _interestEarned;
 11         
 12         // 利率是静态的,因为所有的帐户都使用相同的利率
 13         private static double _interestRate;
 14 
 15         // 构造函数初始化类成员
 16         public SavingsAccount(int accountNumber, double balance)
 17         {
 18             this._accountNumber = accountNumber;
 19             this._balance       = balance;
 20         }
 21 
 22         // AccountNumber只读属性
 23         public int AccountNumber
 24         {
 25             get
 26             {
 27                 return _accountNumber;
 28             }
 29         }
 30 
 31         // Balance 只读属性
 32         public double Balance
 33         {
 34             get
 35             {
 36                 if (_balance < 0)
 37                     Console.WriteLine("无余额");
 38                 return _balance;
 39             }
 40         }
 41 
 42         // InterestEarned 读/写属性
 43         public double InterestEarned
 44         {
 45             get
 46             {
 47                 return _interestEarned;
 48             }
 49 
 50             set
 51             {
 52                 // 验证数据
 53                 if (value < 0.0)
 54                 {
 55                     Console.WriteLine("InterestEarned 不能为负数");
 56                     return;
 57                 }
 58                 _interestEarned = value;
 59             }
 60         }
 61 
 62         // InterestRate 读/写属性为静态,
 63         // 因为所有特定类型的帐户都具有相同的利率
 64         public static double InterestRate
 65         {
 66             get
 67             {
 68                 return _interestRate;
 69             }
 70 
 71             set
 72             {
 73                 // 验证数据
 74                 if (value < 0.0)
 75                 {
 76                     Console.WriteLine("InterestRate 不能为负数");
 77                     return;
 78                 }
 79                 else
 80                 {
 81                     _interestRate = value / 100;
 82                 }
 83             }
 84         }
 85     }
 86     
 87 
 88     class TestSavingsAccount
 89     {
 90         /// <摘要>
 91         /// 应用程序的主入口点。
 92         /// </摘要>
 93         [STAThread]
 94         static void Main(string[] args)
 95         {
 96             // 创建 SavingsAccount 的对象
 97             SavingsAccount objSavingsAccount = new SavingsAccount(123455000);;
 98             // 用户交互
 99             Console.WriteLine("输入到现在为止已获得的利息和利率");
100             objSavingsAccount.InterestEarned = Int64.Parse(Console.ReadLine());
101             SavingsAccount.InterestRate = Int64.Parse(Console.ReadLine());
102             
103             // 使用类名访问静态属性
104             objSavingsAccount.InterestEarned += objSavingsAccount.Balance * SavingsAccount.InterestRate;
105             Console.WriteLine("获得的总利息为: {0}", objSavingsAccount.InterestEarned);
106         }
107     }
108 }
 

 

 

索引器

[访问修饰符]  数据类型  this[数据类型  标识名] 


{

get{};

set{};            //内置参数 value 用于传递数据

}

  1 using System;
  2 
  3 namespace Example_2
  4 {
  5     /// <摘要>
  6     /// 该程序演示索引器的用法
  7     /// </摘要>
  8     
  9     //   Photo 表示照片
 10     //   这里的简单实现只包含标题。 更加实用的版本
 11     //   可以包括文本描述和指向包含照片的文件链接。
 12     class Photo
 13     {
 14         class Delegates
 15         {
 16 
 17         }
 18     
 19         string _title;
 20 
 21         public Photo(string title)
 22         {
 23             this._title = title;
 24         }
 25 
 26         public string Title
 27         {
 28             get
 29             {
 30                 return _title;
 31             }
 32         }
 33     }
 34 
 35     // 此类表示相册,即照片的集合
 36     class Album
 37     {
 38         //用于存储照片的数组
 39         Photo[] photos;
 40 
 41         // 用户创建相册时必须指定相册可以存放照片的张数。
 42         // 为数组分配存储照片所需的确切大小。
 43         public Album(int capacity)
 44         {
 45             photos = new Photo[capacity];
 46         }
 47 
 48         //   传递的索引用于对照片数组进行检索。
 49         public Photo this[int index]
 50         {
 51             get
 52             {
 53                 // 验证索引范围
 54                 if (index < 0 || index >= photos.Length)
 55                 {
 56                     Console.WriteLine("索引无效");
 57                     // 使用 null 指示失败
 58                     return null;
 59                 }
 60 
 61                 // 对于有效索引,返回请求的照片
 62                 return photos[index];
 63             }
 64 
 65             set
 66             {
 67                 // 验证索引范围
 68                 if (index < 0 || index >= photos.Length)
 69                 {
 70                     Console.WriteLine("索引无效");
 71 
 72                     return;
 73                 }
 74 
 75                 //对于有效索引,向数组加载新的照片
 76                 photos[index] = value;
 77             }
 78         }
 79 
 80         //   允许按标题查找照片
 81         public Photo this[string title]
 82         {
 83             get
 84             {
 85                 // 循环遍历数组中的所有照片
 86                 foreach (Photo p in photos)
 87                 {
 88                     // 将照片的标题与索引器参数进行比较
 89                     if (p.Title == title)
 90                         return p;
 91                 }
 92                 Console.WriteLine("未找到");
 93 
 94                 // 使用 null 指示失败
 95                 return null;
 96             }
 97         }
 98     }
 99 
100     class TestIndexer
101     {
102         /// <摘要>
103         /// 应用程序的主入口点。
104         /// </摘要>
105         [STAThread]
106         static void Main(string[] args)
107         {
108             // 创建容量为 3 的相册
109             Album friends = new Album(3);
110 
111             // 创建 3 张照片
112             Photo first = new Photo("Jenn");
113             Photo second = new Photo("Smith");
114             Photo third = new Photo("Mark");
115 
116             // 向相册加载照片
117             friends[0= first;
118             friends[1= second;
119             friends[2= third;
120 
121             // 按索引进行检索
122             Photo obj1Photo = friends[2]; 
123             Console.WriteLine(obj1Photo.Title);
124 
125             // 按名称进行检索
126             Photo obj2Photo = friends["Jenn"]; 
127             Console.WriteLine(obj2Photo.Title);
128         }        
129     }

130 }        

posted @ 2008-10-09 14:55  Edward Xie  阅读(353)  评论(1编辑  收藏  举报