当前位置: 首页 > 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#》

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

在这里插入图片描述

相关文章:

20250529-C#知识:索引器

C#知识&#xff1a;索引器 索引器给对象添加了索引访问的功能&#xff0c;实际访问的是对象的成员&#xff0c;感觉不太常用。 1、主要内容及代码示例 索引器中类似属性&#xff0c;也包含get和set方法索引器能够使像访问数组一样访问对象一般当类中有数组类型的成员变量时&am…...

【笔记】suna部署之获取 Tavily API key

#工作记录 Tavily 注册 Tavily 账号5&#xff1a; 打开浏览器&#xff0c;访问 Tavily 官网Tavily AI。点击页面上的 “注册” 按钮&#xff0c;按照提示填写注册信息&#xff0c;如邮箱地址、设置密码等&#xff0c;完成注册流程。也可以选择使用 Google 或 GitHub 账号授权登…...

06-Web后端基础(java操作数据库)

1. 前言 在前面我们学习MySQL数据库时&#xff0c;都是利用图形化客户端工具(如&#xff1a;idea、datagrip)&#xff0c;来操作数据库的。 我们做为后端程序开发人员&#xff0c;通常会使用Java程序来完成对数据库的操作。Java程序操作数据库的技术呢&#xff0c;有很多啊&a…...

JavaScript性能优化实战的技术文-——仙盟创梦IDE

JavaScript性能优化实战技术文章大纲 性能优化的核心原则 减少代码执行时间降低内存消耗优化网络请求提升用户体验 代码层面的优化 减少全局变量使用&#xff0c;避免命名冲突和内存泄漏使用节流&#xff08;throttle&#xff09;和防抖&#xff08;debounce&#xff09;优…...

GitHub Copilot 使用手册与原理解析

一、Copilot 简介 GitHub Copilot 是由 GitHub 联合 OpenAI 推出的 AI 编程助手。它能在你编程时&#xff0c;基于上下文智能补全代码、自动生成函数、编写测试用例、解释代码含义等&#xff0c;大幅提高编程效率。 即便有 Google、Amazon、Meta 等强劲竞争对手推出免费工具&…...

vllm 2080TI ubuntu环境安装

#TOC 欢迎使用Markdown编辑器安装gcc 9 sudo add-apt-repository ppa:ubuntu-toolchain-r/testsudo apt-get install gcc-9 g-9sudo apt-get install gcc-9 g-9sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 --slave /usr/bin/g g /usr/bin/g-9gcc …...

【C语言】指针详解(接)

前言&#xff1a; 文接上章&#xff0c;在上章节讲解了部分指针知识点&#xff0c;在本章节为大家继续提供。 六指针与字符串&#xff1a;C 语言字符串的本质 在 C 语言中&#xff0c;字符串实际上是一个以\0结尾的字符数组。字符串常量本质上是指向字符数组首元素的指针&…...

【C】箭头运算符

在C语言中&#xff0c;p_tone->power_off 是一种通过指针访问结构体成员的方法&#xff0c;称为箭头运算符&#xff08;->&#xff09;。它主要用于以下场景&#xff1a; 1. 语法解释 p_tone&#xff1a;是一个指向结构体&#xff08;或联合体&#xff09;的指针。powe…...

HTTP Accept简介

一、HTTP Accept是什么 HTTP协议是一个客户端和服务器之间进行通信的标准协议&#xff0c;它定义了发送请求和响应的格式。而HTTP Accept是HTTP协议中的一个HTTP头部&#xff0c;用于告诉服务器请求方所期望的响应格式。这些格式可以是媒体类型、字符集、语言等信息。 HTTP A…...

什么是单片机?

众所周知&#xff0c;人类行为受大脑调控&#xff0c;正如视觉、听觉、味觉、嗅觉、触觉及运动功能等感官与肢体活动均受其指挥&#xff1b;换言之&#xff0c;大脑作为人体的中枢神经系统&#xff0c;负责管理所有可控制的生理功能。 在电子设备领域&#xff0c;单片机…...

联通专线加持!亿林网络 24 核 32G 裸金属服务器,千兆共享带宽适配中小型企业 IT 架构

在当今数字化时代&#xff0c;企业的业务运营越来越依赖高效、稳定的 IT 架构。对于中小型企业而言&#xff0c;如何在有限的预算内构建强大且可靠的 IT 基础设施&#xff0c;是一项关键挑战。亿林网络推出的 24 核 32G 裸金属服务器&#xff0c;搭配联通专线和千兆共享带宽&am…...

Ubuntu的shell脚本

关于shell脚本 • shell脚本是文本的一种。 • shell脚本是可以运行的文本。 • shell脚本的内容是由说辑和数据组成。 • shell 脚本是解释型语言。 shell脚本存在的意义 Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具 Linux/UNIX系统…...

微信小程序页面嵌套web-view点击系统导航返回时进行弹窗处理

实现效果&#xff1a;微信小程序页面嵌套web-view点击系统导航返回时进行弹窗处理 首先在web-view里是不可实现的&#xff08;据我了解下来&#xff09; 参考小程序文档&#xff1a;page-container 大致逻辑&#xff1a; 1、page-container可实现页面离开前拦截 2、由于web-vie…...

从抄表到节能,电费管理系统如何重构公寓运营场景——仙盟创梦IDE

租房公寓电费管理系统是集智能计量、自动化计费、线上缴费、数据管理于一体的综合性解决方案&#xff0c;旨在解决传统电费管理中人工抄表误差大、收费效率低、纠纷频发等痛点。系统通过部署智能电表实时采集用电数据&#xff0c;结合云计算与大数据分析技术&#xff0c;实现电…...

Rust 学习笔记:关于闭包的练习题

Rust 学习笔记&#xff1a;关于闭包的练习题 Rust 学习笔记&#xff1a;关于闭包的练习题问题 1问题 2以下程序能否通过编译&#xff1f;若能&#xff0c;输出是&#xff1f;以下程序能否通过编译&#xff1f;若能&#xff0c;输出是&#xff1f;考虑该 API&#xff0c;空白处填…...

记一次前端逻辑绕过登录到内网挖掘

前言 在测试一个学校网站的时候&#xff0c;发现一个未授权访问内网系统&#xff0c;但是这个未授权并不是接口啥的&#xff0c;而是对前端 js 的审计和调试发现的漏洞&#xff0c;这里给大家分享一下这次的漏洞的过程。 进入内网的过程 可以看到是一个图书馆的网站&#xff…...

有什么excel.js支持IE11,可以显示EXCEL单元格数据,支持单元格合并,边框线,单元格背景

有什么excel.js支持IE11,可以显示EXCEL单元格数据,支持单元格合并,边框线,单元格背景 在 IE11 环境下操作 Excel 且需要支持单元格合并、边框、背景等格式时&#xff0c;需考虑兼容性较强的库。以下是符合需求的工具及对比分析&#xff1a; 1. SheetJS&#xff08;js-xlsx&am…...

x86 与 ARM 汇编深度对比:聚焦 x86 汇编的独特魅力

一、引言 汇编语言是硬件与软件的桥梁&#xff0c;x86 和 ARM 作为两大主流架构&#xff0c;其汇编语言在设计理念、指令集、编程风格上差异显著。本文以 x86 汇编为核心&#xff0c;结合与 ARM 的对比&#xff0c;解析 x86 汇编的技术细节与应用场景&#xff0c;助力开发者深…...

Springboot 整合 WebSocket 实现聊天室功能

目录 前言一、WebSocket原理二、Spring Boot集成WebSocket2.1. 引入依赖2.2 配置类WebSocketConfig2.3 WebSocketServer 类2.4 前端代码 index.html2.5 Controller访问首页 前言 WebSocket概述&#xff1a; 在日常的web应用开发中&#xff0c;常见的是前端向后端发起请求&…...

用 Trae IDE 打造一个桌面小爬虫:从 PyQt5 开始,轻松采集掘金首页内容

很多程序员都有这样的经历&#xff1a;刷掘金、看文章、找灵感、追热点。但你有没有想过&#xff0c;有一天让“爬虫”代替你去浏览这些内容&#xff1f;自动提取标题、作者、点赞数、评论数&#xff0c;一键生成你的专属“技术热点日报”。 今天我们就用 Trae IDE PyQt5 来完…...

python和风api获取天气(JSON Web Token)

下载安装openssl 默认安装目录&#xff0c;添加C:\Program Files\OpenSSL-Win64\bin到用户Path环境变量 打开cmd&#xff0c;执行命令&#xff0c;会生成两个文件ed25519-private.pem&#xff0c;ed25519-public.pem openssl genpkey -algorithm ED25519 -out ed25519-privat…...

模板应用更新同步到所有开发中的应用

需求是为多个 Vue 3 应用方便地同步模板更新&#xff0c;并且模板自身也可能演进&#xff0c;采用 Git 上游仓库 (Upstream) 策略。这种方法在操作上相对直观&#xff0c;更贴近常规的 Git 工作流&#xff0c;并且能较好地处理模板更新中可能涉及到的配置文件、依赖项以及 Vue …...

git和gitee的常用语句命令

Git 和 Gitee 常用命令及语法规则 一、Git 基础配置与初始化 在使用 Git 进行版本控制之前&#xff0c;需要进行用户签名的配置。此操作只需执行一次即可生效。 git config --global user.name "用户名" # 设置用户名 git config --global user.email "邮箱…...

52、C# 泛型 (Generics)

泛型是 C# 2.0 引入的一项强大功能&#xff0c;它允许你编写可以处理多种数据类型的代码&#xff0c;而无需为每种类型重复编写相同的逻辑。泛型提高了代码的重用性、类型安全性和性能。 基本概念 泛型类 public class GenericClass<T> {private T _value;public Gene…...

理解 Vue 2 的响应式原理:数据劫持与依赖收集的背后

在Vue2中,响应式系统是一切魔法的源头,无论是模板中的数据绑定,还是computed,watch的精准监听,都离不开Vue背后的响应式机制,本文将从源码角度出发,结合实例,深入剖析vue2是如何通过数据劫持(Object.defineProperty)和依赖收集实现响应式的 一.Vue2响应式系统基本原理 vue2中…...

深入理解 Pinia:Vue 状态管理的革新与实践

深入理解 Pinia&#xff1a;Vue 状态管理的革新与实践 一、引言 在 Vue.js 应用开发中&#xff0c;状态管理是构建复杂应用的关键环节。Pinia 作为新一代 Vue 状态管理库&#xff0c;凭借其简洁的 API 设计、强大的开发体验和良好的性能表现&#xff0c;逐渐成为 Vue 开发者的…...

Dubbo高频面试题

引言 作为分布式服务框架的标杆&#xff0c;Dubbo凭借其高性能RPC通信、灵活的服务治理能力和丰富的容错机制&#xff0c;成为Java技术栈中微服务领域的核心考点。本文系统梳理Dubbo高频面试核心知识点&#xff0c;涵盖容错策略、负载均衡、注册中心原理、服务上下线感知等关键…...

Allegro X PCB设计小诀窍--05.如何在Allegro X中实现隐藏电源飞线效果

背景介绍&#xff1a;在PCB设计过程中&#xff0c;布线初期印制板上的飞线错综复杂&#xff0c;信号线和电源线混合交错&#xff0c;但是实际上对于多层板来说&#xff0c;电源的网络一般是通过电源层铺铜连接的&#xff0c;很少需要走线&#xff0c;这样混乱的情况会严重影响设…...

一篇文章教会你ESP8266串口WIFI无线模块实现物联网无线收发,附STM32代码示例

目录 一、ESP-01S无线模块: &#xff08;1&#xff09;特点&#xff1a; &#xff08;2&#xff09;管脚定义&#xff1a; &#xff08;3&#xff09;启动模式&#xff1a; 二、ESP-01S出厂固件烧录&#xff1a; &#xff08;1&#xff09;引脚接线&#xff1a; &#xff0…...

算法-基础算法

一、枚举算法 也称为穷举算法&#xff0c;指的是按照问题本身的性质&#xff0c;一一列举出该问题所有可能的解&#xff0c;并在逐一列举的过程中&#xff0c;将它们逐一与目标状态进行比较以得出满足问题要求的解。在列举的过程中&#xff0c;既不能遗漏也不能重复 1. 问题 …...