news 2026/5/9 7:43:26

C#索引器基础知识

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C#索引器基础知识

一什么是索引器

索引器是类的特殊成员,作用只有一个:

让自定义的对象,能像数组/list/字典一样,用[ ]方括号(索引下标)直接取值,赋值

  • 知识点归属:C# 面向对象 → 类成员 → 特殊属性 → 索引器
  • 存在意义:让自定义类能用[]语法访问,伪装成数组风格,封装内部查询逻辑,简化调用、统一写法、符合封装思想

二核心语法

示例

1.创建索引器

public class Student { // 私有数组:存储成绩(核心数据) private int[] scores = new int[3]; // 索引器:int 索引 → 读写 int 类型成绩 public int this[int index] { // 取值:obj[0] get { return scores[index]; } // 赋值:obj[0] = 90 set { scores[index] = value; } } }

2.使用索引器

class Program { static void Main(string[] args) { // 创建对象 Student stu = new Student(); // 用索引器赋值(和数组一模一样!) stu[0] = 95; stu[1] = 88; stu[2] = 90; // 用索引器取值 Console.WriteLine(stu[0]); // 输出:95 Console.WriteLine(stu[1]); // 输出:88 } }

三核心知识总结

int:代表索引器读写的数据类型(这里是成绩,所以是int

this:是索引器的固定关键字,表示 “这个类支持[]访问”

[int index]:就是调用时[]里传的参数,你说的 “索引” 完全正确

  • 索引器不是方法:是类的成员,和属性、字段同级
  • 必须写 this:这是索引器的标志,没有 this 就不是索引器
  • 可以只读 / 只写
    • 只读:只写get,不能赋值
    • 只写:只写set,极少用
  • 支持重载:一个类可以写多个索引器(不同索引类型)
  • 和数组的区别
    • 数组:系统自带,只能存固定类型
    • 索引器:自定义,能加逻辑(比如判断索引是否越界)
  • 常用场景:自定义集合类、封装一组数据

四自定义集合封装

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 7:38:09

学术写作技能体系化构建:从逻辑架构到工具流的高效实践

1. 项目概述:学术写作技能的系统化构建 在学术圈摸爬滚打十几年,从自己吭哧吭哧写论文,到后来指导研究生、审阅期刊稿件,我最大的感触是:学术写作,远不止是“把话说清楚”那么简单。它更像一门精密的手艺&a…

作者头像 李华
网站建设 2026/5/9 7:35:31

RePKG终极指南:深入解析Wallpaper Engine资源提取与转换技术

RePKG终极指南:深入解析Wallpaper Engine资源提取与转换技术 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg 在数字创作的世界里,Wallpaper Engine以其惊艳的…

作者头像 李华
网站建设 2026/5/9 7:31:19

光伏阵列MPPT跟踪与SVM故障诊断融合方法【附代码】

✅ 博主简介:擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导,毕业论文、期刊论文经验交流。 ✅ 如需沟通交流,私信联系。(1)动态步长扰动观察法与功率预测的MPPT:针对传统扰动观察法在…

作者头像 李华
网站建设 2026/5/9 7:23:29

深入解析lxzclaw:模块化爬虫框架的设计哲学与实战应用

1. 项目概述与核心价值最近在折腾一个挺有意思的开源项目,叫lxztry/lxzclaw。乍一看这个仓库名,可能有点摸不着头脑,但如果你对数据采集、网络爬虫或者自动化工具感兴趣,那这个项目绝对值得你花时间研究一下。简单来说&#xff0c…

作者头像 李华
网站建设 2026/5/9 7:13:30

C语言完美演绎8-17

/* 范例&#xff1a;8-17 */#include <stdio.h>void func(char *i,int j){printf("%d 以%s方式来调用函数指针\n",j,i);}void main(void){void (*pfun)(char *a, int b); /* 定义pfun函数指针 */pfunfunc; /* 将函数func()的地址赋值给函数指针pfun */(*pf…

作者头像 李华