当前位置: 首页 > article >正文

20250529-C#知识:索引器

C#知识:索引器

索引器给对象添加了索引访问的功能,实际访问的是对象的成员,感觉不太常用。


1、主要内容及代码示例

  • 索引器中类似属性,也包含get和set方法
  • 索引器能够使像访问数组一样访问对象
  • 一般当类中有数组类型的成员变量时,可以考虑使用索引器
  • 索引器可以为读写操作添加额外的处理逻辑
  • 索引器支持重载,参数可以不止一个,可以不是整数
  • 一般是公共的,因为要从类外访问
namespace LearnIndexer
{class Item{private float x;private float y;private int[] values;   //一般当类中有数组类型的成员变量时,可以考虑使用索引器public Item(float x, float y, int[] values){this.x = x;this.y = y;this.values = values;}public int GetCount() => values.Length;public int this[int idx]    //索引器中类似属性,也包含get和set方法{get{if(idx < 0 || idx >= values.Length) //索引器可以为读写操作添加额外的处理逻辑{Console.WriteLine("索引越界");return -1;}return values[idx];}}public float this[char axis]    //索引器支持重载,索引参数可以不止一个,可以不是整数{get{switch(axis){case 'x':return x;case 'y':return y;}return -1;}set{if(value < 0){Console.WriteLine("不能修改为负数");return;}switch (axis){case 'x':x = value;break;case 'y':y = value;break;}}}}internal class Program{static void Main(string[] args){Item apples = new Item(2, 5, new int[] { 1, 2, 3 });//索引器能够使像访问数组一样访问对象Console.WriteLine($"x = {apples['x']} y = {apples['y']}");  //x = 2 y = 5int totalValue = 0;for(int i = 0; i < apples.GetCount(); i++){totalValue += apples[i];}Console.WriteLine(totalValue);  //6}}
}

2、参考资料

  1. 《唐老狮C#》

本篇结束,感谢您的阅读~

在这里插入图片描述

http://www.lryc.cn/news/2392516.html

相关文章:

  • 【笔记】suna部署之获取 Tavily API key
  • 06-Web后端基础(java操作数据库)
  • JavaScript性能优化实战的技术文-——仙盟创梦IDE
  • GitHub Copilot 使用手册与原理解析
  • vllm 2080TI ubuntu环境安装
  • 【C语言】指针详解(接)
  • 【C】箭头运算符
  • HTTP Accept简介
  • 什么是单片机?
  • 联通专线加持!亿林网络 24 核 32G 裸金属服务器,千兆共享带宽适配中小型企业 IT 架构
  • Ubuntu的shell脚本
  • 微信小程序页面嵌套web-view点击系统导航返回时进行弹窗处理
  • 从抄表到节能,电费管理系统如何重构公寓运营场景——仙盟创梦IDE
  • Rust 学习笔记:关于闭包的练习题
  • 记一次前端逻辑绕过登录到内网挖掘
  • 有什么excel.js支持IE11,可以显示EXCEL单元格数据,支持单元格合并,边框线,单元格背景
  • x86 与 ARM 汇编深度对比:聚焦 x86 汇编的独特魅力
  • Springboot 整合 WebSocket 实现聊天室功能
  • 用 Trae IDE 打造一个桌面小爬虫:从 PyQt5 开始,轻松采集掘金首页内容
  • python和风api获取天气(JSON Web Token)
  • 模板应用更新同步到所有开发中的应用
  • git和gitee的常用语句命令
  • 52、C# 泛型 (Generics)
  • 理解 Vue 2 的响应式原理:数据劫持与依赖收集的背后
  • 深入理解 Pinia:Vue 状态管理的革新与实践
  • Dubbo高频面试题
  • Allegro X PCB设计小诀窍--05.如何在Allegro X中实现隐藏电源飞线效果
  • 一篇文章教会你ESP8266串口WIFI无线模块实现物联网无线收发,附STM32代码示例
  • 算法-基础算法
  • 特种设备作业人员-G3锅炉水处理如何备考学习?