最近遇到个关于接口的奇怪的问题
接口的作用众所周知了,而且C#的接口,必须明确两点:
1.必须实现接口中定义的方法、属性等,原型必须一样(返回值类型、函数名,参数类型)
2.实现接口的类中必须使用public修饰符
那我们下面来看一个例子:
foreach (var tp in array.GetType().GetInterfaces())
{
Console.WriteLine(tp.Name);
}
上面的例子取出了对象array实现的所有接口名称,我们看到有下面这些:
IList
ICollection
IEnumerable
IList`1
ICollection`1
IEnumerable`1
我们看到array实现了ICollection接口,我们跳到这个接口代码区看下:
public interface ICollection : IEnumerable
{
int Count { get; }
bool IsSynchronized { get; }
object SyncRoot { get; }
void CopyTo(Array array, int index);
}
我们发现上面有个Count属性,这个……我们都知道string[]类型的对象是不会有Count属性的,只会有Length属性。
这样的话,其实已经违背了上面列的两条了。而且我发现在NHibernate里面也有一个这样的类,实现了IEnumerable接口,却没有提供IEnumerator GetEnumerator()的实现。
这就是我百思不得其解的地方。查了些资料,没找到合理解释,希望谁能来解释一下!
最近遇到个关于接口的奇怪的问题相关推荐
- Dart中抽象类 多态以及接口
Dart中抽象类:Drat抽象类主要是用于定义标准,子类可以继承抽象类,也可以实现抽象类接口. 1.抽象类通过abstract关键字来定义 2.Drat中的抽象方法不能用abstract声明,Dart ...
- 如何选择短信接口平台?
对于许多企业来说,短信接口并不奇怪,它是系统语言开发支持的总结,各种标准化的运行环境,完全解决了不同开发语言和开发环境对各个合作伙伴的需求.在服务体验变得越来越重要的时候,将短信接口嵌入到自己的系统中 ...
- 反病毒引擎设计全解(四)
3.病毒实时监控 3.1实时监控概论 实时监控技术其实并非什么新技术,早在DOS编程时代就有之.只不过那时人们没有给这项技术冠以这样专业的名字而已.早期在各大专院校机房中普遍使用的硬盘写保护软件正是利 ...
- iis php7页面空白,iis 无法显示htm页面问题解决
IIS连最基本的htm都访问不了的原因及解决方法:1.右键 IIS相应网站-->属性-->ISAPI筛选器,之前为了能够访问php我在这里添加了Php筛选器, 而php-cig.exe并不 ...
- Nvidia Jetson AGX Orin 初体验
一.开箱 Nvidia Jetson AGX Orin是今年Nvidia推出的唯一的开发套件,相比Jetson Nano 472GFLOP算力.Jetson Xaiver 32TOPS(INT8)算力 ...
- SpringMVC对PathVariable的特殊字符.的处理默认是文件后缀
作为程序狗,生命不息,bug不止.在"止"这些bug的征程上,很讨厌遇到奇奇怪怪的bug,也很开心遇到这些奇奇怪怪的bug.通过暴露的这些bug,愈挫愈勇的去掌握欠缺的某个技术点或 ...
- 入侵特斯拉汽车Model S 信息娱乐系统漏洞
一直以来特斯拉被认为比其他具有网络连接功能的汽车更安全,可以作为联网汽车的楷模,尽管特斯拉时不时被爆出一些小BUG.例如,2015年8月的黑客大会DEFCON上,安全研究人员Marc Rogers和K ...
- flutter基础 dart语言学习笔记
1.JIT(Just-In-Time 动态编译) 即时编译为什么能大幅度提升性能 JIT,即Just-in-time,动态(即时)编译,边运行边编译: https://book.flutterchin ...
- 实例演绎Unix/Linux的一切皆文件思想
大家习惯了使用socket来编写网络程序,socket是网络编程事实上的标准. 我们知道,在Unix/Linux系统中"一切皆文件",socket也被认为是一种文件,socket被 ...
- 入侵特斯拉——智能汽车安全性分析
特斯拉汽车一直受到黑客的关注,很多安全研究人员都尝试过挖掘特斯拉汽车的漏洞,主要原因是特斯拉是纯电动汽车并且有网络连接,可以通过网络对汽车进行控制,而且特斯拉本身也非常依赖电子控制系统.本文就来分析特 ...
最新文章
- centos下fail2ban安装与配置详解
- Opportunity update implementation in backend
- iOS基础-高级视图-UITableView--静态单元格
- idea jpa方法 自动提示_Spring Boot的自动配置、Commandline Runner
- AppList.json文件为空,主界面清缓存后加载后还正常显示
- itop docker3.0.0安装
- 【Scala】使用Scala程序实现WordCount--词频统计(代码)
- NYOJ-部分和问题(dfs)
- c语言50例题答案,100个经典c语言例题(带答案).doc
- 阿里巴巴JAVA开发手册资源分享
- java将pdf,word,excel转成图片
- 如何用计算机管理员权限,如何以管理员身份运行电脑?急
- 嵌入式软件工程师笔试面试指南目录
- android获得cache路径,android取得当前程序File与Cache路径!
- No.118 Pascal's Triangle ||
- 如何写.bat批处理文件
- c语音,求两个数中的最大值
- CUDA安装失败(已解决)
- C语言 航班售票系统/航班管理系统
- 《“透视”个人大数据》项目开发小记 --(二)网络服务端,邮箱验证和手机验证(C#,Java)