c#数组补充

简介: c#数组的几个简单的补充

c#数组的几个简单的补充

数组是引用类型,不论其元素是值类型还是引用类型。

c#中数组对象实现的各个接口:

// 定义了浅拷贝的能力,因此数组可以进行浅拷贝
System.ICloneable
// ICollection接口的子代,使用接口编程减轻耦合,该接口只定义了一些方法,有索引器,查询元素位置,插入数据,移除索引位置数据这个方法,简单的可以当作存放数据的容器,不能像List那样具有很多数据处理的方法。
System.Collections.IList
// 集合的父基类,定义了返回元素数量,复制等一些集合类型最基本的方法,同时提供了可以同步访问ICollection对象元素的方法,数组具有这些能力
System.Collections.ICollection
// 定义迭代遍历的能力,数组可以使用foreach循环
System.Collections.IEnumerable
// .net4 新增接口,定义了排序的能力,数据可以进行排序因此而来
System.Collections.IStructuralComparable
// .net4 新增接口,定义比较能力,数组可以比较数组是否具有相同的内容
如果元素数量不同直接返回不相等,同时具有几个元素就会执行几次比较
System.Collections.IStructuralEquatable
// 也提供了索引器,删除插入查询数据几个方法,但是是泛型数据

/* 特殊的,所有的数组默认继承自Array抽象类,该类实现了如上的接口,但在查看源码不能看到数组实现如下接口,这些接口实在CLR动态为一维数组实现如下的接口 */
System.Collections.Generic.IList <T>
// 提供泛型的能力,也有基本的增删改查的功能
System.Collections.Generic.ICollection <T>
// 一个类型可以使用linq迭代,必须实现改接口,因此数组可以使用linq查询。
System.Collections.Generic.IEnumerable <T>
// 只读list,通过索引访问该只读list的元素
System.Collections.Generic.IReadOnlyList <T>
// 只读集合,通过索引访问该只读集合的元素
System.Collections.Generic.IReadOnlyCollection <T>

代码查看:

            foreach (var type in (new int[0,0]).GetType().GetInterfaces())
                Console.WriteLine(type);

通过执行该代码,当创建的数组是一维数组时,该数组对象会实现泛型接口,可以拥有linq查询的能力,但当不是一维数组时,此时的数据就不具有linq的能力,此时的数组对象不实现泛型接口。

这些动作是由CLR (公共语言运行时)执行的,内部原理并不清楚,但一般而言linq查询是对集合进行操作,数组属于集合,但由于存在多维数组,数组不能直接实现IEnumerable泛型接口获取linq查询的能力,而是在托管代码运行时由CLR负责处理,对一维数组赋予接口能力,非一维数组不能拥有接口能力。

当然上面这些都是对引用类型而言,值类型不会有这种动态赋予接口能力的操作。

目录
相关文章
|
8月前
|
人工智能 自然语言处理 机器人
适合电商的智能客服系统推荐(2025年12月更新)
瓴羊Quick Service是阿里云旗下智能客服产品,深度整合电商交易链路,支持全渠道协同与大模型应用,具备高并发稳定性,助力中大型电商实现服务智能化与业务增长。
|
6月前
|
存储 机器学习/深度学习 人工智能
阿里云服务器第九代计算型c9i实例解析:至强6处理器,AI加速40%,安全升级
阿里云服务器计算型c9i实例,搭载英特尔®至强®6处理器,单核算力提升20%,采用CIPU架构降低网络延迟、提升存储IOPS,实现高性能与高能效的平衡,适用于在线游戏、视频编解码等场景。c9i实例在计算、网络、存储性能上全方位提升。目前,c9i实例2核4G、4核8G、8核16G配置有优惠,用户还可领取额外优惠券享受减免。
|
安全 iOS开发 MacOS
Dolphin指纹浏览器+IPXProxy代理IP:配置与使用全流程
通过代理IP,用户可以轻松绕过地域限制,访问全球范围内的网站和服务。不过想要同时使用多个代理IP的话,就需要借助指纹浏览器。Dolphin指纹浏览器和IPXProxy代理IP是大家常用的组合,这个组合为用户打造了一个既安全又高效的在线环境。下面是Dolphin指纹浏览器配置IPXProxy代理IP使用步骤,帮助大家更好了解这个组合。
893 3
|
数据采集 存储 人工智能
Python采集数据保存CSV文件内容乱码解决
Python采集数据保存CSV文件内容乱码解决
1047 1
|
自然语言处理 API 开发者
强强联合,开源中文DeepSeek-R1蒸馏数据集联合魔搭社区,一起来训练中文版推理模型!
近期,刘聪NLP开源了开源中文DeepSeek-R1(满血)蒸馏数据集包括SFT版本和普通版本,话不多说,先放数据下载链接。
889 1
|
网络协议 数据可视化 Unix
【计算机网络】——前言计算机网络发展的历程概述
我们知道,21世纪的一些重要特征就是数字化、网络化、和信息化,它是一个以网络为核心的信息时代。要实现信息化就必须依靠完善的网络,因为网络可以非常迅速的传递信息。网络现在已经成为信息社会的命脉和发展知识经济的重要基础。网络对社会和经济发展的很多方面已经产生了不可估量的影响。那网络是从何而来的?是怎样发展的?我们今天就来谈一谈。
|
存储 XML JSON
应用层协议设计及ProtoBuf
应用层协议设计及ProtoBuf
549 0
|
监控 网络协议 算法
OSPFv2与OSPFv3的区别:全面解析与应用场景
OSPFv2与OSPFv3的区别:全面解析与应用场景
845 0
|
API 开发工具 数据库
【国产开发神器】零代码搭建API接口开放/管理平台——YesApi
YesApi 接口大师,是一款国产企业级API接口管理平台,可以零代码、快速搭建API接口开发平台、接口开放平台、接口管理平台。基于PhalApi Pro 接口开发框架专业版软件,通过低代码可视化配置方式帮助企业快速搭建接口开放平台和管理API接口。 所以说:YesApi接口大师 = 接口低代码开发 + 接口零代码开放 + 接口零代码管理 + 接口计费
1330 0
|
5月前
|
机器学习/深度学习 自然语言处理 搜索推荐
大模型应用:电商智能推荐:基于本地大模型的冷启动智能推荐系统实例.61
本文介绍基于Qwen1.5-1.8B-Chat轻量大模型的电商智能推荐系统,解决冷启动、模糊意图理解与可解释性差等痛点;通过语义特征增强、个性化意图解析及自然语言推荐理由生成,提升准确性与用户体验,代码开源、易于中小团队落地。
600 13

热门文章

最新文章