面向对象基础——索引器

  C#中的string是可以通过索引器来访问对象中的字符,但却不能修改字符的值。

  我们来看string中关于索引器的定义,如下图。

  上图中索引器如同属性一样,具有get方法,却没有set方法,所以这就是为什么C#中的string类型的变量都是只读的。

  

  现在让我们来编写属于自己的索引器:

 1     class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             Test test = new Test();
 6             Console.WriteLine("test[1] = {0},test[2] = {1}",test[1],test[2]);
 7
 8             test[1] = "蔡升晏";
 9             test[2] = "石锦航";
10             Console.WriteLine("test[1] = {0},test[2] = {1}", test[1], test[2]);
11
12             Console.WriteLine("索引器的重载:" + test["温尚翊",5]);
13         }
14     }
15
16     public class Test
17     {
18         private string name1 = "陈信宏";
19         private string name2 = "刘冠佑";
20
21         public string this[int index]
22         {
23             get
24             {
25                 if (index == 1)
26                 {
27                     return name1;
28                 }
29                 else if(index == 2)
30                 {
31                     return name2;
32                 }
33                 else
34                 {
35                     throw new Exception("索引的值超出了范围");
36                 }
37             }
38             set
39             {
40                 if (index == 1)
41                 {
42                     name1 = value;
43                 }
44                 else if (index == 2)
45                 {
46                     name2 = value;
47                 }
48                 else
49                 {
50                     throw new Exception("索引的值超出了范围");
51                 }
52             }
53         }
54         //索引器也是可以重载的
55         public string this[string str, int x]
56         {
57             get
58             {
59                 return str + x;
60             }
61         }
62     }

  输出结果:

  我们看到,索引器像属性一样,具有get和set方法;又可以像类中的函数一样,可以被重载。

  在ADO.NET技术中,索引器经常被频繁地使用。

时间: 2024-10-29 10:45:46

面向对象基础——索引器的相关文章

C# 基础之索引器

当一个类有数组成员时,索引器将大大简化对类中数组成员的访问 索引器类似于属性有get与set访问器 列如: 使用: 总结:从以上代码可以看出索引器也是对私有字段进行访问的方式,但此时的私有字段是数组类型,而属性一般只对简单数据类型的私有字段进行访问

C#基础回顾(三)—索引器、委托、反射

一.前言 ------人生路蜿蜒曲折,独自闯荡 二.索引器 (1)定义: 索引器是一种特殊的类成员,它能够让对象以类似数组的形式来存取,使程序看起来更为直观,更容易编写. 定义形式如下: [修饰符] 数据类型 this[索引类型 index] { get{//获得属性的代码} set{//设置属性的代码} } 其中,修饰符包括:public,protected,private,internal,new,virtual,sealed,override, abstract,extern. (2)实现

【Unity|C#】基础篇(7)——属性(Property) / 索引器(Indexer)

[学习资料] > 在线文档 官方文档:https://docs.microsoft.com/zh-cn/dotnet/csharp/ 菜鸟教程(高级教程):https://www.runoob.com/csharp/csharp-tutorial.html > 视频教程 腾讯学院.Siki学院         > 书籍 <C#图解教程>(第6章):https://www.cnblogs.com/moonache/p/7687551.html [学习内容] > 菜鸟教程:

修罗场第一天:C#之面向对象基础第一部分

1.关于类和对象 类名下可以是字段,属性,构造函数,函数和索引器.属性的本质就是get和set两个函数. 2.面向对象: 封装:可以减少冗余代码,并且将难以理解的东西封装起来,对外提供一个简单的接口.导致我们可以无需理解好多东西也可以运用好多东西. 继承:在类与类之间提供了关系,为多态打下了基础,其具有当单根性和传递性. 多态:实现方法有虚方法,抽象类以及接口.不同的对象对同一个消息做出不同的响应这个就是多态.多态是基于继承和里氏转换的. 里氏转换:任何子类对象都可以赋值给父类对象      

大话设计模式学习笔记——面向对象基础

前言 好记性不如烂"笔头"系列--大话设计模式学习笔记 目录 面向对象基础 面向对象基础 什么是类与实例 一切事物皆为对象,即所有的东西老师对象,对象就是可以看到.感觉到.听到.触摸到.尝到.或闻到的东西.准确地说,对象是一个自包含的实体,用一组可识别的特性和行为来标识.面向对象编程,英文叫 Object-Oriented Programming,其实就是针对对象来进行编程的意思.类就是具有相同属性和功能的对象的抽象集合.实例就是一个真实的对象.比如我们属于'人'类,而个人就是'人'类

面向对象基础(class0425)字符串与集合

常用类库 学习.net就是学习它的无数个类库怎么用,先看两个简单的 String 字符串,不可变特性.字符串可以看成字符数组 属性 Length 方法 IsNullOrEmpty() 静态方法 ToCharArray() ToLower() string不可变性 ToUpper() Equals() 忽略大小写的比较 Join() 静态方法 Format () 静态方法 IndexOf() LastIndexOf() Substring() Split() Replace() Trim()  C

面向对象基础3(class0523)

怎么实现多态2-接口 接口是定义一种能力,规定子类能干什么和抽象类有些相似,解决类的单根继承.接口可以实现多继承 案例 鸟-麻雀sparrow,鸵鸟ostrich,企鹅penguin,鹦鹉parrot 鸟能飞鸵鸟,企鹅不能...你怎么办 练习:从学生,老师,父类Person,定义一个接口摄影Iphotographable ,唱歌的接口ISingable 子类继承抽象类,实现接口 接口中的成员必须不能有实现 接口中的成员不能有访问修饰符,隐式公开 接口中可以有属性.方法.索引器等,但不能有字段,构

C#面向对象基础01

面向对象不是取代面向过程的类.对象."人"是类,"张三"是人这个类的对象.类是抽象的,对象是具体的.按钮就是类,某个按钮就是对象.对象可以叫做类的实例.类就像int,对象就像10.字段field(和某个对象相关的变量),字段就是类的状态.人这个 类有姓名.年龄.身高等字段.类不占内存,对象才占内存.方法:方法就是累能够执行的动作,比如问好.吃饭等.类的继承,类之间可以有继承关系,比如电脑类可以从"电器"类继承,这样的好处是"电脑&quo

.NET面向对象基础

面向对象基础的一些概念:递归:方法通过直接或间接调用自身得到的结果.(递归必须拥有终止条件)对象通信:在一个对象的行为中与其它类的对象发生数据交互(注意:对象他那个新会增加程序的耦合) 集合的三要素:结合类型.元素.所引器.数组的优点:读取速度快.查询方便(查询方便与数组的存放位置有关)数组的缺点:长度固定.移动数据是会导致数据的级联变动集合的优点:长度不固定.每次集合容纳不下时,集合会新建一个步长为四的内存(新建内存是指:在已有的内存基础上加一个步长为四) 泛型:某一些类不能单独使用,它依托与