博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#索引器-示例代码
阅读量:7106 次
发布时间:2019-06-28

本文共 1580 字,大约阅读时间需要 5 分钟。

using System;

public class Photo //这个类是一个相片类

{
private string _title; //相片标题
//先定义默认构造函数
public Photo()
{
    //初始化相片标题的构造方法
    _title = "我是张三";
}
public Photo(string title)
{
    //初始化相片标题的构造方法
    _title = title;
}
public string Title
{
    //属性
    get
    {
      return _title;
    }
}
}

public class Album

{
//相册类
Photo[]photos; //用于存放照片的数组
public Album()
{
    //初始化相册大小
    photos = new Photo[3];
}
public Album(int capacity)
{
    //初始化相册大小
    photos = new Photo[capacity];
}
//下面定义索引用于检索照片信息,带有int参数的Photo索引器
public Photo this[int index]
{
    get //get方法用于根据索引从索引器中获取照片
    {
      if (index < 0 || index >= photos.Length)
      //有效的索引
      {
        Console.WriteLine("索引无效");
        return null;
      }
      else
      {
        return photos[index];
      }
    }
    set
    {
      if (index < 0 || index >= photos.Length)
      {
        Console.WriteLine("索引无效");
        return ; //set 无返回 所以 return 就可以了。因为这里定义的是Photo类型,不是void类型。必写返回
      }
      else
      {
        photos[index] = value;
      }
    }
}
//根据标题检索照片,但不能根据标题赋值,设置为只读索引。带有string参数的Photo索引器。
public Photo this[string title]
{
    get
    {
      //遍历数组中所有照片
      foreach (Photo p in photos)
      {
        if (p.Title == title)
        //判断
          return p;
      }
      Console.WriteLine("没有该照片");
      return null;
//使用null指示失败
    }
}
}

class Test

{
static void Main(string[]arsg)
{
    Album friends = new Album(3); //创建相册大小为3
    //创建3张照片
    Photo first = new Photo("逍遥");
    Photo second = new Photo("太子");
    Photo third = new Photo("姚佳");
    friends[0] = first;
    friends[1] = second;
    friends[2] = third;
    //按照索引进行查询
    Photo objPhoto = friends[2];
    Console.WriteLine(objPhoto.Title);
    //按名称进行检查
    Photo obj2Photo = friends["太子"];
    Console.WriteLine(obj2Photo.Title);
}
}

定义索引器的时候使用this关键字,get和set访问器和属性的访问器相同,索引器和数组的属性有点相似,只是数组只通过索引检索,而索引器可以通过重载,自定义访问方式。

注意:将数组作为对象对待更加直观时,才使用索引器。

转载地址:http://ocvhl.baihongyu.com/

你可能感兴趣的文章
Eclipse调试Java的10个技巧
查看>>
从Eclipse插件中读取资源
查看>>
[BZOJ1040][P2607][ZJOI2008]骑士[树形DP+基环树]
查看>>
明天回家了
查看>>
linux之SQL语句简明教程---INSERT INTO
查看>>
实时监控远程用户防问服务器的IP所属位置
查看>>
我的友情链接
查看>>
Java函数之Split的用法
查看>>
mysql 的CLOSE_WAIT 的问题
查看>>
1Python全栈之路系列之Django初体验
查看>>
获取资源的“手段”
查看>>
Freebsd9.0安装Nginx+PHP-FPM+MySQL+eAccelerator+Memcached
查看>>
更新 Exchange 2013 CU22后的问题
查看>>
[shell]线上环境puppet证书异常 重新进行认证脚本
查看>>
【读书笔记】数据库逻辑结构
查看>>
洛谷——1616 疯狂的采药(完全背包)
查看>>
Nginx脚本方式切割日志
查看>>
朋友圈H5营销怎么玩?又见情感营销
查看>>
$(window).scroll不能在样式内写overflow属性
查看>>
centos 6.0 dhcp 报错及解决
查看>>