永发信息网

C#/VB.net如何判断对象是否实现了某个接口?

答案:2  悬赏:80  手机版
解决时间 2021-02-18 02:50
如何判断某个对象是否实现了某个接口?

C#/VB.net代码均可。

我是需要在运行时判断一个对象是否实现某个接口,然后我才能选择是否执行接口中的某个方法。
最佳答案
对象 is 接口名
实现了就返回true
否则返回false
例如
ArrayList list = new ArrayList();
Console.WriteLine(list is ICollection);//输出true

另外根据你的描述我觉得还可以使用as关键字来实现
还是拿我上面的例子
ICollection collection = list as ICollection;//如果list实现了ICollection接口,list会被转型成为ICollection,否则返回null
if(collection != null){
collection.Sort();
}
全部回答
visual basic.net还是c# ——如何选择.net语言 在.net中,如何选择vb或c#?这似乎已经争论了很久。很多人盲目选择,也产生了许多流言和错误。本文将从以下方面指导你选择正确的开发语言。 功能上的考虑 许多人认为c#的功能比vb.net强大,或者c#更加适合.net等。其实这不是一两句话能比较清楚的。c#的确有vb无法完成的功能,但vb也有c#无法完成的功能。总的来说,对于.net开发,vb和c#没有任何差别,都100%兼容于cls。下面列出的是他们语言功能上的不同,这些仅仅是语言实现上的问题,不会影响到生成的代码。打*号的内容与cls不兼容。 c#有而vb没有的功能: 1、 运算符重载。* 2、 不安全代码(指针和固定内存区)。* 3、 无符号整数。* 4、 移位运算。 vb有而c#没有的功能 1、 即时编译。 2、 静态事件绑定。 3、 条件异常捕获。 4、 com兼容类。* 5、 宽松的类型检查和变量声明。 6、 visual basic runtime库。 7、 可选参数、带参数属性、模块等语言特征。* 8、 动态数组。* 可见,实际上功能更强大的是vb而不是c#。不过它们不一样的地方多半是无关紧要的特征。总体上来说,不应从功能上选择vb或者c#,因为他们没有什么具体的差别。 性能上的考虑 性能是程序员最关心的问题。vb和c#都生成一样的il,因此理论上说不会有性能的差异。但许多人为什么说c#的性能高于vb.net呢?这是因为vb.net支持即时编译,就是一边书写代码一边编译。这样可立刻发现语法错误,使调试变得更加容易。但是这样一来vb就需要随时浏览整个代码文件,并把临时数据储存。这造成vb.net生成的代码中常常具有冗余部分。但也不能就此下结论说vb比c#慢,当用户选择打开优化并且以release方式编译工程,就能得到与c#一样简短快速的代码。 学习上的难度 这部分不仅仅初学者需要考虑,那些从现有开发工具转移到.net的开发人员也需要考虑。首先,vb和c#都是非常简单的,对于初学者来说,vb提供伸缩性更强的空间,因此比c#更加易于接受。但这只是相对而言,c#对于初学者来说也不会有太多的困难。 对于使用visual basic6或其他版本的程序员来说。vb.net的语法显然要比c#更加接近vb6,网上流传的vb与vb.net差别被过分夸大,使部分程序员退缩。其实vb.net增加的只是面向对象的思想,许多vb程序员不具备完善的面向对象编程开发经验,因此觉得vb.net难以接受,这是很容易克服的。想想看,即使你要使用c#不也得学习面向对象吗?至于有c/c++/java经验的人,c#是小菜一碟。刚才说过c#和vb实际上都很简单,所以不见得vb程序员学习c#就要比c/c++程序员来的困难,反之亦然,有c/c++经验的人也可以果断的选择vb。 移植现有代码 这一部分是程序员最头疼的部分。但对语言选择有决定性的意义。 从vb6移植代码的程序员,最佳选择就是vb.net,因为其他.net语言没有一种是与vb相似的。而且即使vb6的工程移植到vb.net非常困难,也有一个移植向导可以帮助你完成大部分工作。如果手工把他移植到c#,需要白白花费大量的时间。而且刚开始使用c#的vb程序员通常都会为c#缺少他们熟悉的函数而头疼。vb.net不会出现这种情况。 从asp移植到asp.net,首选语言仍然是vb.net,因为多数程序员使用的asp语言是vbscript,只有vb.net最大程度地接近这种语言。 c#对于移植代码似乎没有作用,了解c#的人都明白,把现有c/c++代码放到c#中运行几乎是100%不能通过的。所以,如果需要移植c/c++代码,最好使用visual c++.net。他做到了最好的新旧结合。c#仅仅用于编写新的.net应用程序。 如果需要从java移植代码,c#可以选择。同时还有j#及其他一些ms提供的转换工具。 文档和资源方面的考虑 在msdn文档中,c#和vb是同等看待的。所有文档和例子都是有vb和c#两份的。因此,在寻求资源方面都不用担心。互联网上的资源,c#要多于vb,特别是国内,有倾向于c#的潮流。但是asp.net的资源vb较多。国内缺乏vb.net资源是影响vb.net推广的重要原因。但是在国外有很多非常成熟的vb技术,如掌上设备的开发技术。 代码风格和杂项问题 c#书写的代码比vb平均短小20%,许多人不喜欢vb中过长的关键字。当然他们可以选择c#。但在开发环境中,vb的自动完成功能比c#更完善,其实30%的代码都是自动补充的。因此,实际上vb程序员不会比c#多打多少字。但vb语言换行比c#麻烦,如果需要书写大量繁杂而长的代码,最好选择c#。vb的代码接近完整的英语,比c#更加易读。如果是初学者不妨选择vb。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
坦克世界德系走中坦线好还是重坦线好
天龙酒家怎么去啊,有知道地址的么
在液晶电视机上如何使用移动硬盘看电影啊?它
保险真的很赚钱吗?
晚上做梦梦见自己被绑架..有什么征兆?
照明线路接头预留多少
多选:该求助者的心理问题属于()。A.赡养问
为什么我的QQ群没满员也加不了人了????急
别出心裁的自我介绍?
中国联通宇鸿通讯授权点我想知道这个在什么地
已知二次函数f(x)=ax^2+bx+c 讨论函数f(x)的
锦绣未央演员表舒畅
剑灵剑士极限破天加焦热斩么
Mr. Lin gave us some ______ how to learn E
叙述文和散文有什么区别?
推荐资讯
欢迎来广东旅游。英文简写
梦见海上石头雕刻的龙很多很多
读图,完成1~2题1图中a、b、c、d四个位置最容
怎样用acdsee把彩色相片批量改为黑白
MPLAB X 怎么一直无法编译
根据《规划环境影响评价技术导则(试行)》,
华中商务在什么地方啊,我要过去处理事情
目光短浅的人叫什么回复个电话给发生的
每天一次大便,每次都把裂口绷开,肛裂能恢复
单组份粘接防水密封胶厂家炼胶时可以戴手套吗
是有一句话叫作“孙权十八立江东”吗?
360相机和美图秀秀哪个占用内存少
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?