C#基础加强(1)之索引器
索引器
介绍
索引器,初学者可能听起来有些陌生,但其实我们经常会用到它,例如:
// 字符串的索引器 string str = "hello world"; ]; // 获取到字符串中索引为 4 的字符 // 字典的索引器 var info = new Dictionary<string,string>(); info.Add("name1","张三"); // 从字典中通过索引器获取到 key 为 name1 的值 string name1 = info["name1"];
索引器的创建
看如下实体类:
public class Person { private string _value; // 索引器 public string this[int i, int j] { get { Console.WriteLine(i + "" + j + " from get"); return _value; } set { Console.WriteLine(i + "" + j + " from set"); this._value = value; } } }
在该类中创建了一个索引器,可以通过索引器对 Person 类中的 hobbies 字段进行操作,如下:
var person = new Person(); // 给 person 对象中的 hobbies 列表属性前三个索引位置插入数据 person[,] = "吃饭"; person[,] = "睡觉"; person[,] = "打豆豆"; person.Hobbies.ForEach(h => { Console.WriteLine(h); }); /* 吃饭 睡觉 打豆豆 */ // 获取 hobbies 列表属性前两个元素 ,]; Console.WriteLine(hobbyStr); /* 吃饭,睡觉 */
相关面试题
1、为什么字符串只能 ]; ,而不能 s[] = 'a'; ?
因为字符串类的索引只读,如下:
[__DynamicallyInvokable] [IndexerName("Chars")] public extern char this[int index] { [SecuritySafeCritical, __DynamicallyInvokable, MethodImpl(MethodImplOptions.InternalCall)] get; }
2、C# 中索引器是不是只能根据数字索引?是否允许多个索引器参数?
- 不是只能根据数字索引,例如上面介绍示例中的字典就可以使用字符串。
- 允许多个索引器参数,如上面的 Person 类。
C#基础加强(1)之索引器的更多相关文章
- C#基础回顾(三)—索引器、委托、反射
一.前言 ------人生路 ...
- .NET基础知识之七——索引器
索引器是什么?有什么作用?索引器允许类的实例以访问数组的形式来访问对象里面的属性.如我们经常可以看到类似于dr["name"]="test",或者 ...
- C# 基础之索引器
当一个类有数组成员时,索引器将大大简化对类中数组成员的访问 索引器类似于属性有get与set访问器 列如: 使用: 总结:从以上代码可以看出索引器也是对私有字段进行访问的方式,但此时的私有字段是数组类 ...
- C#基础--索引器
classProgram { staticvoidMain(string[] args) { man mm =new man(); mm[0]="jingya"; mm[1]=&q ...
- 【Unity|C#】基础篇(7)——属性(Property)/ 索引器(Indexer)
[学习资料] <C#图解教程>(第6章):https://www.cnblogs.com/moonache/p/7687551.html 电子书下载:https://pan.baidu.c ...
- python基础整理4——面向对象装饰器惰性器及高级模块
面向对象编程 面向过程:根据业务逻辑从上到下写代码 面向对象:将数据与函数绑定到一起,进行封装,这样能够更快速的开发程序,减少了重复代码的重写过程 面向对象编程(Object Oriented Pro ...
- 如何使用T-SQL备份还原数据库及c#如何调用执行? C#中索引器的作用和实现。 jquery控制元素的隐藏和显示的几种方法。 localStorage、sessionStorage用法总结 在AspNetCore中扩展Log系列 - 介绍开源类库的使用(一) span<T>之高性能字符串操作实测
如何使用T-SQL备份还原数据库及c#如何调用执行? 准备材料:Microsoft SQL Server一部.需要还原的bak文件一只 一.备份 数据库备份语句:user master backup ...
- ylbtech-LanguageSamples-Indexers(索引器)
ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-Indexers(索引器) 1.A,示例(Sample) 返回顶部 “索引器”示例 本示 ...
- 第一篇 .NET高级技术之索引器
基础知识补充 索引 器 没有名字 ,索引器的内部本质 (ILSpy的IL模式下看)类型 this[参数]{get;set;} 可以是只读或者只写(在get或者set前加上private) 字符串是只读 ...
随机推荐
- invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
Mac系统升级git会找不到并且报错:xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools) ...
- [ci]容器ci索引
伙计们: 有任何意见或建议或看不懂的请在对应的文章下留言(请注明上下文) 我会及时改动. 这是以前的一些在物理机上搞过 [ci]容器ci索引 http://www.cnblogs.com/iiiihe ...
- fiddler 对https支持
https://www.cnblogs.com/joshua317/p/8670923.html 测试可行
- Python实现im2col和col2im函数
今天来说说im2col和col2im函数,这是MATLAB中两个内置函数,经常用于数字图像处理中.其中im2col函数在<MATLAB中的im2col函数>一文中已经进行了简单的介绍. 一 ...
- repo命令详解
Android 为企业提供一个新的市场,无论大企业,小企业都是处于同一个起跑线上.研究 Android 尤其是 Android 系统核心或者是驱动的开发,首先需要做的就是本地克隆建立一套 Androi ...
- Thymeleaf模版--子页面单独引入CSS、JS文件
https://blog.csdn.net/u010392801/article/details/80465800 ****************************************** ...
- 看雪CTF第十四题
from z3 import * dest=[] s = Solver() data = [, , , , , , , , , , , , , , , , , , , , , , , , , , , ...
- vlc-ts
https://github.com/jiayayao/vlc_2.1.0-vs_2010 https://wenku.baidu.com/view/a0634d26336c1eb91a375d70. ...
- [springBoot系列]--springBoot注解大全[转]
一.注解(annotations)列表 @SpringBootApplication:包含了@ComponentScan.@Configuration和@EnableAutoConfiguration ...
- 可视化展示attention(seq2seq with attention in tensorflow)
目前实现了基于tensorflow的支持的带attention的seq2seq.基于tf 1.0官网contrib路径下seq2seq 由于后续版本不再支持attention,迁移到melt并做了进一 ...