对象封装时,往往要考虑采用简洁的方式提供对类型内部成员的访问,作为 C#的一个语法特性——索引器非常适合完成该任务。
索引器(Indexer)可以让客户程序用近似数组的方式访问对象内部成员,将访问方法封装为索引器可以令客户代码更为简洁、直观。不过.NET 的索引器还提供基于联合键(Federated Key)的访问,利于对于一些结构比较复杂(尤其是那些同时受到多个纬度、多个属性制约而导致变化)的类型以简单的方式访问。
基于.NET 提供的托管委托机制,索引器设计上除了可以把键值作为参数外,还可以把检索过程中需要执行的规则和算法以委托的形式传递给索引器,在更大程度上提高了目标对象检索的灵活性,同时尽量保持目标类型检索接口的稳定性。
随着.NET 过渡到 3.5 版本,LINQ 作为一个具有普遍适应性的“实体 / 数据”技术,简化对各种异构数据的访问。索引器可以把 LINQ 作为具体实现技术,在提供简单访问接口的同时,提供对各种异构数据的统一检索。
了解更多的内容,请观看完整文章:通过索引器简化 C#类型信息访问
更多内容推荐
.NET6 新东西 -- 插值字符串优化
字符串是我们平时使用最多的一个类型,从C#6开始就支持插值字符串,方便我们进行字符串的操作,并且大部分分析器也推荐使用插值这种写法,因为它够使得我们的代码更加清晰简洁,到了.NET6中的C#10则为我们提供了更好的实现方式以及更佳的性能。那么什么是插值
2021-11-25
老生常谈 -- 什么是装箱什么是拆箱
我们知道.NET具有两个数据类型:值类型和引用类型。因为值类型没有指针引用,不是分配在托管堆中,也不会被GC回收,因此它比引用类型更加高效。但有时我们需要将一种类型的变量转换为另一种类型,这时我们就可以使用装箱/拆箱。
2021-12-07
14|类型系统:有哪些必须掌握的 trait?
trait 到底做到了什么?延迟绑定了实现行为。
2021-09-24
02|拒绝“Hello and Bye”:Go 语言的设计哲学是怎么一回事?
在学习Go语言之前,一定要先看看你认不认同Go语言的设计哲学。
2021-10-15
29|接口:为什么 nil 接口不等于 nil?
为什么Go语言核心团队的技术负责人Russ Cox会说,“如果要从Go语言中挑选出一个特性放入其他语言,我会选择接口”呢?
2021-12-29
.NET 内存管理必备知识
小型对象是被分配在小型对象堆SOH上的。SOH有3代,分别是:第0代,第1代,第2代。对象根据寿命向上移动。将新对象放在Gen 0上。当第0代充满时,.NET垃圾收集器会处理不需要的对象,并将其它内容移至第1代上,如果第1代充满了那么垃圾回收会再次运行处理不需要
2021-12-10
12|类型系统:Rust 的类型系统有什么特点?
Rust 类型系统的检查到底有多严格?
2021-09-20
C# 世界的《Effective C++》,来自.Net 之父的核心揭秘
作为.NET程序员,如果只读三本书,那么《框架设计指南:构建可复用.NET库的约定、惯例与模式(第3版)》这本书一定不容错过!
2023-04-04
09|所有权:一个值可以有多个所有者么?
想要一个值有多个所有者,怎么办?
2021-09-10
在线 JSON 转 CSharp(C#)Class 工具
在线JSON转CSharp(C#)Class工具
2022-06-22
17|复合数据类型:用结构体建立对真实世界的抽象
Go中的结构体类型是怎么样的呢?
2021-11-19
Entity Framework 7 支持批量操作和 JSON 列
EF7 Core可用于.NET 7和.NET 6。
C#入门系列 (十一) -- 多维数组
定义和初始化C#中允许定义多维数组,多维数组的每个元素又是一个数组,称为子数组。
2022-06-11
14. 《重学 JAVA》-- 内部类
内部类的访问规则: 1.可以直接访问外部类的成员,包括私有 2.外部类要想访问内部类成员,必须创建对象内部类的分类: 1.成员内部类 2.局部内部类 3.静态内部类 4.匿名内部类
2021-12-15
C# ref 用法,实现引用传递(地址传递)
今天这篇文章我们简单学习一下C# ref的用法,在看别人的代码不至于看不懂逻辑,虽然这是一个比较简单的知识点,但是还是值得我们去学习一下关于这个知识点一些概念,我们知道在C# 中我们的函数参数,一般都为值引用,C#是一门解释型语言,其中对指针进行了封
2022-10-14
.NET 6 新东西 -- 高性能日志
一提到日志记录,大家就会想到log4net,如果提到.NET中的日志记录,一定会想到ILogger,这个ILogger是.NET中常用的提供的日志记录的方式,下面的代码是.NET Core WebAPI 项目初始化的代码,其中就使用了ILogger来提供日志记录:
2021-12-17
EPPlus - 用于 .NET 的 Excel 电子表格
我们都会遇到需要用程序操作Excel电子表格的情形。在这里推荐一个.NET非常好用的包EPPlus。
2022-08-24
C#中的属性
@TOC这篇文章主要面向的对象是初级开发人员,以及对属性不是很熟悉的开发人员。
2021-12-21
详解.NET 的求复杂类型集合的差集、交集、并集
前言如标题所述,在http://ASP.NET应用程序开发中,两个集合做比较时 我们使用微软IEnumerable封装的 Except/Intersect/Union 取 差集/交集/并集 方法是非常的方便的;但以上对于不太熟悉的小伙伴来讲,在遇到求包含引用类型(不包含string)集合时就非常的苦
2022-07-28
如何提高 C# StringBuilder 的性能
本文探讨使用C# StringBuilder 的最佳实践,用于减少内存分配,提高字符串操作的性能。
2021-11-18
暂无签名
推荐阅读
2023 年北京.NET 线下技术沙龙圆满落幕!
2023-05-23
2023 年成都.NET 线下技术沙龙来了!大咖分享,报名从速
2023-04-06
.NET 源码解读 kestrel 服务器及创建 HttpContext 对象流程
2023-06-20
可怕!.Net 8 正式发布了,.Net 野心确实不小!
2023-11-16
2. 结果集处理:unsafe 实现
2023-09-26
01|知识回顾:Go 基础知识你真的掌握了吗?
2022-10-11
8. Trait 操作
2023-09-08
电子书
大厂实战PPT下载
换一换 王晓波 | 同程旅行 出行事业群 CTO
邓波 | 淘天集团 高级技术专家
方之家 | 饿了么 资深算法专家
评论