接口为什么可以用new直接实例化?

zhao_zheming 2016-06-18 07:10:09
加精
一直认为接口是不能实例化的,但是下面的代码为啥不报错?

using Microsoft.Office.Interop.Excel;
using System;

namespace Test {
class Program {
static void Main(string[] args) {
Application a = new Application();
Console.ReadKey();
}
}
}
...全文
7004 50 打赏 收藏 转发到动态 举报
写回复
用AI写文章
50 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2018-11-30
  • 打赏
  • 举报
回复
引用 40 楼 拜一刀 的回复:
哪来这么多一级小号...
  • 打赏
  • 举报
回复
http://www.cnblogs.com/pnljs/archive/2012/02/20/2359313.html


https://www.cnblogs.com/zhili/archive/2013/01/27/COMInterop.html

这两个网址能解决你的问题
our1314 2017-11-19
  • 打赏
  • 举报
回复
这个话题可以继续下去,Application是一个接口,可以实例化是因为其实已经指定一个实现类ApplicationClass,实际上实例化的是这个类,因此也可以直接实例化ApplicationClass来操作Excel,但这时会报错:“无法嵌入互操作类型"ESRI.ArcGIS.Carto.MapDocumentClass".请改用适用的接口”,这时将引用打开 “属性” 对话框:“嵌入互操作类型” 设置为 False即可解决,可参考:https://www.cnblogs.com/babycool/p/3838204.html。
our1314 2017-11-19
  • 打赏
  • 举报
回复
楼主太棒了!
our1314 2017-11-19
  • 打赏
  • 举报
回复
C# 这玩意高深莫测啊!
fkueali 2016-07-15
  • 打赏
  • 举报
回复
表面上看是 new Application(),而c# 实际上编译为去启动以个跨进程的 COM 代理机制,而不是普通的进程内托管对象实例化方法
yuhoucsdn 2016-07-15
  • 打赏
  • 举报
回复
引用 1 楼 sp1234 的回复:
对于 COM 接口,实际上使用 COM GUID 找到系统注册表中的组件,然后以 .net 封装方式来与COM 层通讯。这并不是真正的去实例化托管对象,而只是实例化一个通用的 COM 代理。实际上这里没有 .net framework 中的托管对象可实例化。
挺好的!!!!!!
poing8881 2016-07-15
  • 打赏
  • 举报
回复
学习了!!非常受用!!
WldMichael 2016-07-14
  • 打赏
  • 举报
回复
666666666666666学习了
xxxyuyy001 2016-07-14
  • 打赏
  • 举报
回复
学习了。收藏
xxxyuyy001 2016-07-14
  • 打赏
  • 举报
回复
大神,感谢分享
sinat_35602043 2016-07-14
  • 打赏
  • 举报
回复
lvmuheng 2016-07-14
  • 打赏
  • 举报
回复
6666666666666666666666666围观下
qq_34499654 2016-07-14
  • 打赏
  • 举报
回复
接口是不能被实例化的,但是接口的实现类是可以实例化的,说明这个接口的修饰内容是将接口与某个具体的实现类做了关联,实例化的时候直接通过接口找到具体的实现类,然后实例化的,希望各位大牛批评指正
sinat_34733905 2016-07-14
  • 打赏
  • 举报
回复
caonimagejbdan10 2016-07-13
  • 打赏
  • 举报
回复
不错不错,mark了
ReyQiao 2016-07-13
  • 打赏
  • 举报
回复
6666666666666666
qq_31046173 2016-07-13
  • 打赏
  • 举报
回复
buzhidao
qq_34912515 2016-07-13
  • 打赏
  • 举报
回复
为了混分的。。。。。
云梦_泽 2016-07-13
  • 打赏
  • 举报
回复
666666666666666
加载更多回复(30)

110,526

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧