夜光带你走进C#语言 中级版本(4)

2024-01-07 05:10

本文主要是介绍夜光带你走进C#语言 中级版本(4),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

夜光序言:

 

 

不要轻易去依赖一个人,它会成为你的习惯,当分别来临,你失去的不是某个人,而是你精神的支柱。无论何时何地,都要学会独立行走,它会让你走得更坦然些。

 

 

 

 

 

 

 

 

 

正文:

C# 索引器(Indexer)

索引器(Indexer) 允许一个对象可以像数组一样被索引。

 

当我们为类定义一个索引器时,该类的行为就会像一个 虚拟数组(virtual array) 一样。

 

我们可以使用数组访问运算符([ ])来访问该类的实例。

语法

一维索引器的语法如下:

element-type this[int index]
{
   // get 访问器
   get
   {
      // 返回 index 指定的值
   }

   // set 访问器
   set
   {
      // 设置 index 指定的值
   }
}

索引器(Indexer)的用途

索引器的行为的声明在某种程度上类似于属性(property)。

就像属性(property),我们可使用 getset 访问器来定义索引器。

但是,属性返回或设置一个特定的数据成员,而索引器返回或设置对象实例的一个特定值。

 

换句话说,它把实例数据分为更小的部分,并索引每个部分,获取或设置每个部分。

 

定义一个属性(property)包括提供属性名称。索引器定义的时候不带有名称,但带有 this 关键字,它指向对象实例。

 

下面的实例演示了这个概念:

实例

 

using System;namespace GeniusTest01
{class IndexedNames{private string[] namelist = new string[size];static public int size = 10;public IndexedNames(){for (int i = 0; i < size; i++)namelist[i] = "N. A.";}public string this[int index]{get{string tmp;if( index >= 0 && index <= size-1 ){tmp = namelist[index];}else{tmp = "";}return ( tmp );}set{if( index >= 0 && index <= size-1 ){namelist[index] = value;}}}public class Class116{static void Main(string[] args){IndexedNames names = new IndexedNames();names[0] = "A斗罗大陆";names[1] = "B斗破苍穹";names[2] = "C绝世唐门";names[3] = "D武动乾坤";names[4] = "E";names[5] = "F";names[6] = "G";for (int i = 0; i < IndexedNames.size; i++){Console.WriteLine(names[i]);}Console.ReadKey();}}}
}

 

 

 

 

 

 

 

 

 

 

重载索引器(Indexer)

索引器(Indexer)可被重载。索引器声明的时候也可带有多个参数,且每个参数可以是不同的类型。

 

没有必要让索引器必须是整型的。

 

C# 允许索引器可以是其他类型,例如,字符串类型。

下面的实例演示了重载索引器:

 

实例

using System;namespace GeniusTest01
{class IndexedNames{private string[] namelist = new string[size];static public int size = 10;public IndexedNames(){for (int i = 0; i < size; i++){namelist[i] = "N. A.";}}public string this[int index]{get{string tmp;if( index >= 0 && index <= size-1 ){tmp = namelist[index];}else{tmp = "";}return ( tmp );}set{if( index >= 0 && index <= size-1 ){namelist[index] = value;}}}public int this[string name]{get{int index = 0;while(index < size){if (namelist[index] == name){return index;}index++;}return index;}}public class Class117{static void Main(string[] args){IndexedNames names = new IndexedNames();names[0] = "A斗罗大陆";names[1] = "B斗破苍穹";names[2] = "C绝世唐门";names[3] = "D武动乾坤";names[4] = "E";names[5] = "F";names[6] = "G";// 使用带有 int 参数的第一个索引器for (int i = 0; i < IndexedNames.size; i++){Console.WriteLine(names[i]);}// 使用带有 string 参数的第二个索引器Console.WriteLine(names["Nuha"]);Console.ReadKey();}}}
}

 

 

 

/bin/Debug/netcoreapp2.2/GeniusTest01.dll
A斗罗大陆
B斗破苍穹
C绝世唐门
D武动乾坤
E
F
G
N. A.
N. A.
N. A.
10

 

这篇关于夜光带你走进C#语言 中级版本(4)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/578819

相关文章

C#提取PDF表单数据的实现流程

《C#提取PDF表单数据的实现流程》PDF表单是一种常见的数据收集工具,广泛应用于调查问卷、业务合同等场景,凭借出色的跨平台兼容性和标准化特点,PDF表单在各行各业中得到了广泛应用,本文将探讨如何使用... 目录引言使用工具C# 提取多个PDF表单域的数据C# 提取特定PDF表单域的数据引言PDF表单是一

基于Go语言实现一个压测工具

《基于Go语言实现一个压测工具》这篇文章主要为大家详细介绍了基于Go语言实现一个简单的压测工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录整体架构通用数据处理模块Http请求响应数据处理Curl参数解析处理客户端模块Http客户端处理Grpc客户端处理Websocket客户端

C#实现添加/替换/提取或删除Excel中的图片

《C#实现添加/替换/提取或删除Excel中的图片》在Excel中插入与数据相关的图片,能将关键数据或信息以更直观的方式呈现出来,使文档更加美观,下面我们来看看如何在C#中实现添加/替换/提取或删除E... 在Excandroidel中插入与数据相关的图片,能将关键数据或信息以更直观的方式呈现出来,使文档更

golang1.23版本之前 Timer Reset方法无法正确使用

《golang1.23版本之前TimerReset方法无法正确使用》在Go1.23之前,使用`time.Reset`函数时需要先调用`Stop`并明确从timer的channel中抽取出东西,以避... 目录golang1.23 之前 Reset ​到底有什么问题golang1.23 之前到底应该如何正确的

C#实现系统信息监控与获取功能

《C#实现系统信息监控与获取功能》在C#开发的众多应用场景中,获取系统信息以及监控用户操作有着广泛的用途,比如在系统性能优化工具中,需要实时读取CPU、GPU资源信息,本文将详细介绍如何使用C#来实现... 目录前言一、C# 监控键盘1. 原理与实现思路2. 代码实现二、读取 CPU、GPU 资源信息1.

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

IDEA如何切换数据库版本mysql5或mysql8

《IDEA如何切换数据库版本mysql5或mysql8》本文介绍了如何将IntelliJIDEA从MySQL5切换到MySQL8的详细步骤,包括下载MySQL8、安装、配置、停止旧服务、启动新服务以及... 目录问题描述解决方案第一步第二步第三步第四步第五步总结问题描述最近想开发一个新应用,想使用mysq

C#使用yield关键字实现提升迭代性能与效率

《C#使用yield关键字实现提升迭代性能与效率》yield关键字在C#中简化了数据迭代的方式,实现了按需生成数据,自动维护迭代状态,本文主要来聊聊如何使用yield关键字实现提升迭代性能与效率,感兴... 目录前言传统迭代和yield迭代方式对比yield延迟加载按需获取数据yield break显式示迭

使用SQL语言查询多个Excel表格的操作方法

《使用SQL语言查询多个Excel表格的操作方法》本文介绍了如何使用SQL语言查询多个Excel表格,通过将所有Excel表格放入一个.xlsx文件中,并使用pandas和pandasql库进行读取和... 目录如何用SQL语言查询多个Excel表格如何使用sql查询excel内容1. 简介2. 实现思路3