C#索引器

【C#进阶】C# 索引器 🍂 Hello大家好啊,我是作家桑。本文为大家介绍 C# 中的索引器。 阅读详情

C#索引器语法:

[访问修饰符] 数据类型 this [数据类型标识符]。

示例1:

using System;
using System.Collections.Generic;
using System.Text;

namespace PH6_2
{
    class Photo
    {
        string _title;
        public Photo(string title)
        {
            _title = title;
        }
        public string Title
        {
            get
            {
                return _title;
            }
            set
            {
                _title = value;
            }
        }
    }
    class Album
    {
        Photo[] photos;
        public Album(int capacity)
        {
            photos = new Photo[capacity];
        }
        public Photo this[int index]
        {
            get
            {
                if (index < 0 || index >= photos.Length)
                {
                    Console.WriteLine("索引无效");
                    return null;
                }
                return photos[index];
            }

            set
            {
                if (index < 0 || index >= photos.Length)
                {
                    Console.WriteLine("索引无效");
                    return;
                }
                photos[index] = value;
            }
        }

        public Photo this[string title]
        {
            get
            {
                foreach(Photo photo in photos)
                {
                    if (photo.Title==title)
                    {                       
                        return photo;
                    }
                }
                return null;
            }

        }
    }
    class TestIndex
    {
        static void Main(string[] args)
        {
            Photo first = new Photo("first");
            Photo second = new Photo("second");
            Photo third = new Photo("third");
            Album album = new Album(3);

            album[0] = first;
            album[1] = second;
            album[2] = third;

            Console.WriteLine("第2张照片:" + album[1].Title);
            Console.WriteLine(album["third"].Title);
        }
    } 
}

运行效果如下:

 

注意,不能定义两个相同数据类型的索引器,但是可以定义不同数据类型的索引器,其返回值可以相同。

例如下面的示例是不正确的:两个索引器,索引都是int,编译报错: 类型“PH6_2.TestIndex”已定义了一个名为“this”的具有相同参数类型的成员 。

    class TestIndex
    {
        int[] num1s ={ 1, 2, 3, 4, 5 };
        string[] s ={ "a", "b", "c" };

        public int this[int index]
        {
            get
            {
                return num1s[index];
            }
        }
        public string this[int index]
        {
            get
            {
                return s[index];
            }
        }

        static void Main(string[] args)
        {
            TestIndex testIndex = new TestIndex();
            uint i = 2;
            Console.WriteLine(testIndex[i]);
        }
    } 

可以将第2个索引器的索引改为uint,则编译通过。如下:

    class TestIndex
    {
        int[] num1s ={ 1, 2, 3, 4, 5 };
        string[] s ={ "a", "b", "c" };

        public int this[int index]
        {
            get
            {
                return num1s[index];
            }
        }
        public string this[uint index]
        {
            get
            {
                return s[index];
            }
        }

        static void Main(string[] args)
        {
            TestIndex testIndex = new TestIndex();
            uint i = 2;
            Console.WriteLine(testIndex[i]);
        }
    } 

  还需要注意:索引的索引类型不同,而返回值相同,也是正确的。如下示例是正确的:

    class TestIndex
    {
        int[] num1s ={ 1, 2, 3, 4, 5 };
        int[] num2s ={ 10, 11, 12, 13, 14, 15 };

        public int this[int index]
        {
            get
            {
                return num1s[index];
            }
        }
        public int this[uint index]
        {
            get
            {
                return num2s[index];
            }
        }

        static void Main(string[] args)
        {
            TestIndex testIndex = new TestIndex();
            uint i = 2;
            Console.WriteLine(testIndex[i]);
            Console.WriteLine(testIndex[2]);
        }
    } 

基于STM32与HRTIM的四开关Buck-Boost双向DC-DC电源设计实战(附源码、仿真与设计解析) 本文详细介绍了基于STM32F334的HRTIM高分辨率定时器实现四开关Buck-Boost双向DC-DC电源的设计实战。通过精准的PWM控制、双环PID算法和智能模式切换逻辑,解决了电压震荡与效率优化等关键问题,并提供了完整的源码、PSIM仿真及参数计算,为高性能电源设计提供了实用参考。 阅读详情

相关推荐

《大明王朝1566》中,朝廷财政危机无法解决的根源分析

财政困局中的财富最终流向三重黑洞:​皇室挥霍​(如嘉靖炼丹修殿)、特权阶层贪腐​(严党年入百万两盐税)、制度性损耗​(宗室供养、低效官僚)。更深层的“钱”其实是被禁锢在道德化治理的牢笼中——当国家用“黄河长江皆可为用”的权术思维替代制度性改革时,财政危机便成为帝制王朝无法逃脱的宿命。

为了小家奋斗 1973

C# 核心语法-索引器

using System; namespace lesson6_索引器 { #region 知识回顾 #endregion #region 索引器基本概念 //基本概念 //让对象可以像数组一样通过索引访问其中元素,使程序看起来更直观,更容易编写 #endregion #region 索引器语法 // 访问修饰符 返回值 this(参数类型 参数名,参数类型 参数名……) // {

weixin_61541885的博客 204

Pseudobulk与FindMarkers单细胞差异基因分析实战对比

本文深入对比了单细胞差异基因分析中Pseudobulk与FindMarkers两种主流方法。通过实战演示,详细解析了二者在底层逻辑、数据准备、分析流程及结果解读上的核心差异,并提供了基于不同生物学问题与数据特点的选择策略,帮助研究者做出更精准的分析决策。

weixin_29218963的博客 333

C#系列之索引器

C#系列索引器相关内容,一系列基础知识。

2303_76354097的博客 1396

Unity Scriptable Build Pipeline (SBP) 详解

Unity 的可编程构建管线(Scriptable Build Pipeline, SBP)标志着引擎构建架构的一次关键转变,它从不透明的 C++ 实现转向了灵活、可扩展的 C# 框架。SBP 旨在满足现代游戏开发日益增长的需求,通过改进增量处理和高效缓存机制显著提升了构建性能。它赋予开发者对内容构建过程前所未有的控制力,从而能够针对特定项目需求进行深度定制。尽管 SBP 是 Unity 推荐的 Addressables 系统的重要基础层,但理解其核心组件、构建流程和高级功能对于优化大型项目、简化 CI/C

m0_57771536的博客 2209

从JTAG到AS模式:一文搞懂EP4CE10E22C8N所有配置引脚(MSEL, nCONFIG, DATA0)的用法

本文深入解析EP4CE10E22C8N FPGA的配置引脚(MSEL, nCONFIG, DATA0)在不同模式下的使用方法,特别关注从JTAG到AS模式的切换要点。通过详细的配置模式对比、状态机分析和PCB布局建议,帮助开发者避免常见陷阱,提升FPGA配置成功率。

weixin_33713350的博客 320

C# 索引器(Indexer)

索引器(Indexer) 允许一个对象可以像数组一样使用下标的方式来访问。 当您为类定义一个索引器时,该类的行为就会像一个 虚拟数组(virtual array) 一样。您可以使用数组访问运算符 [ ] 来访问该类的的成员。 语法 一维索引器的语法如下: element-type this[int index] { // get 访问器 get { // 返回 index 指定的值 } // set 访问器 set { // 设置 index 指定的值 } } 索引器(Indexer)的用途 索引器的行为的

weixin_43055166的博客 1077

C++结合大漠插件实现DNF自动化脚本:从原理到实战

自动化技术通过模拟用户操作,实现重复性任务的自动执行,其核心原理在于对系统输入输出接口的精确控制。在Windows平台,这通常涉及窗口管理、图像识别与键鼠模拟等技术。这些技术为软件自动化测试、办公流程自动化及特定场景的辅助工具开发提供了工程实践基础。大漠插件作为国内广泛使用的Windows自动化开发组件,封装了上述底层操作,显著降低了开发门槛。通过其提供的COM接口,开发者可以高效实现窗口绑定、后台找图找色及内存读写等关键功能。本文以《地下城与勇士》为例,详细解析如何利用C++集成大漠插件,构建一个稳定、高

weixin_34185512的博客 579

索引器的详细讲解(C#)

索引器与属性很类似。索引器的创建与属性创建所使用的编程语言特性是一样的。索引器使属性被索引:使用一个或多个参数引用的属性,这些参数为某些值集合提供索引。 索引器语法 可以通过变量名和方括号访问索引器。将索引器参数放入方括号内: var item = SomeObject["key"]; SomeObject["keyOther"] = item; 使用this关键字作为属性名声明索引器,并在方括号内声明参数: public int this[string Key] {

草原上唱山歌的博客 4293

OP-TEE虚拟化支持详解

OP-TEE虚拟化支持解析 OP-TEE提供实验性虚拟化方案,支持多虚拟机共享安全执行环境。核心特性包括: 配置选项:CFG_VIRTUALIZATION启用虚拟化,CFG_VIRT_GUEST_COUNT限制虚拟机数量并分配均等内存资源; Hypervisor协作:需实现虚拟机生命周期通知、SMC参数转换、内存固定等关键协议; 当前限制:仅支持Armv8架构,硬件资源共享有限,采用静态内存配额机制; 架构实现:通过MMU分区切换和扩展内存分配器实现多租户隔离,Nexus核心层管理虚拟机上下文。该方案适用于

Linux内核架构师 109

韩版传奇 2 源码分析与 Unity 重制(一)服务端 TCP 状态管理

该专题将会分析 LOMCN 基于韩版传奇 2,使用 .NET 重写的传奇源码(服务端 + 客户端),分析数据交互、状态管理和客户端渲染等技术,此外笔者还会分享将客户端部分移植到 Unity 和服务端用现代编程语言重写的全过程。本文重点介绍了服务端的启动链路、网络初始化和连接处理这三个过程,并简要分析的游戏循环的实现与数据包处理,在下一篇文章中,我们会从客户端角度分析从游戏启动、登录、游戏开始和基础游戏交互的全流程。

东方猫的博客 2499

C#【高级篇】 C# 索引器(Indexer)

索引器(Indexer) 允许一个对象可以像数组一样使用下标的方式来访问。 当您为类定义一个索引器时,该类的行为就会像一个 虚拟数组(virtual array) 一样。您可以使用数组访问运算符 [ ] 来访问该类的的成员。 ...

星Yeah 的博客 3105

2.Vivado软件基础操作

在本章节,我们以一个简单的计数器实例,介绍FPGA开发软件Vivado的基础操作流程,计数器实例程序的设计,在本课程中先不同掌握,后续课程将针对verilog编程进行讲解。 打开Vivado软件,会看到如下的界面: 点击如下图所示的: 点击Next> 将这个地方,设置路径,注意路径必须是英文路径。且文件夹名称第一个字符不能为数字。所有路径的名称的字符数量不能超过144个符号。 点击Next> 点击Next> 点...

FPGA/MATLAB学习教程/源码/项目合作开发 4480

c#中索引器是什么_C#中的索引器

c#中索引器是什么An Indexer is a special feature of C# to use an object as an array. If you define an indexer in a class then it will behave like a virtual array. Indexer is also known as smart array in C#. I...

cumt951045的博客 1917

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

c#索引器的使用与用途

索引器(Indexer)是C#引入的一个新型的类成员,它使得类中的对象可以像数组那样方便、直观的被引用。索引器非常类似于属性,但索引器可以有参数列表,且只能作用在实例对象上,而不能在类上直接作用。定义了索引器的类可以让您像访问数组一样的使用 [ ] 运算符访问类的成员。(当然高级的应用还有很多,比如说可以把数组通过索引器映射出去等等) 本文只是简单演示一下索引器的概念和基本的使用方法: 请看...

lyh_lry的博客 5986

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

[C#]C# 索引器

/ get 访问器get// 返回 index 指定的值// set 访问器set// 设置 index 指定的值索引器允许类或者结构的实例按照与数组相同的方式进行索引。索引器类似于属性,不同之处在于索引器访问需要参数。例如,i < size;seti++ )

FL1768317420的博客 1027

c#索引器

https://www.cnblogs.com/lgx5/p/9448361.html 索引器(Indexer)是C#引入的一个新型的类成员,它使得类中的对象可以像数组那样方便、直观的被引用。索引器非常类似于属性,但索引器可以有参数列表,且只能作用在实例对象上,而不能在类上直接作用。定义了索引器的类可以让您像访问数组一样的使用 [ ] 运算符访问类的成员。(当然高级的应用还有很多,比如说可以把数...

qq_33380252的博客 1501

C# 索引器

C#索引器的一点个人理解

qq_55780847的博客 3127

C#中索引器的实现

<br />索引器允许类或者结构的实例按照与数组相同的方式进行索引。索引器类似属性,但不同之处在于它们的访问器采用参数。它可以像数组那样对对象采用下标。它提供了通过索引方式方便地访问类的数据信息的方法。<br /> <br />C#并不将索引类型限制为整数,所以我们可以通过访问器的重载,实现整数索引或者字符串索引。<br /> <br />重载索引器时,要保证形参的数量或形参类型至少有一不同。这一点同C#中方法重载貌似没有什么区别。<br /> <br />下面我们就通过简单的例子,实现整数索引和字符串索引

Hamber_Bao的专栏 1424

C#中的索引器

最近看面试题也好,敲手头书上的例子也好,都让我看到了索引器这个概念,原来没有接触过,今天就来看看什么是C#中的索引器 索引器允许类或结构的实例就像数组一样进行索引。 索引器类似于属性,不同之处在于他们的取值函数采用参数 用在哪里  索引器经常是在主要用于封装内部集合或数组的类型中实现的。假如,假定具有一个名为TempRecord的类,此类表示在24小时内的10个不同时间记录的华氏温度。此类

当一堆用不熄灭的柴火 1210
上一篇: C#命名规则和开发习惯
下一篇: web控件在.aspx页面中在.aspx.cs后台代码Page_Load()中都设置了相同的属性,哪个优先级高?
guowd
博客等级 码龄20年 5粉丝 36原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值