wwwh37911 发表于 2019-6-9 11:20:00

请教论坛大神,arx与C#等net有什么区别!

如题,小弟初来乍到,望论坛老大们能不吝赐教,万分感谢!叩拜!

cairunbin 发表于 2019-6-9 23:06:00

你在.net板块来提问这个问题,估计大家都说C#好。
AutoCAD是用C++开发的,最新的版本是不是也有一部分是C#开发的我不知道,但个人感觉应该AutoCAD本身的开发语言还是C++。
这就注定了用C++,也就是ObjectArx做AutoCAD二次开发,在理论上更贴近平台本身,开发出来的插件运行速度更快,功能更强。
但是,这只是理论上成立。C++的指针是双刃剑,用不好的话,二次开发的软件很可能导致AutoCAD崩溃。而C#则相对更简单、易用。目前,Arx可以实现的功能,C#基本可以实现。
C#的好处是,这门语言是微软大力推广的语言,连windows都在使用C#做开发,因此,开发桌面应用,没有理由不选择C#。
选择C#做桌面开发的理由,一来是比C++更简单、易用,另一个最重要的原因,是C#在大多数情况下不需要自己打理内存,所有托管对象,你随便new,delete的工作系统自动完成,不存在内存渗漏的问题,因为内存是由操作系统的垃圾回收机制统一管理的。
但是,别高兴太早了,AutoCAD的C#接口,只不过是C++接口包了一层薄薄的皮而已,仅仅是可以让大家利用C#的语法完成二次开发。内存,对不起,还是要程序猿自己打理!!!切记,在利用C#进行AutoCAD二次开发时,只要对象所属类继承了IDisposable接口,那对不起,你new出来的这个实体,除非你把它加入到AutoCAD自身的数据库,否则,你必须手工把它Dispose掉,否则,你开发的插件,长时间运行时,会大概率导致AutoCAD行为异常,甚至崩溃。
不过,说一千道一万,我还是大力推进C#开发。不管怎么说,C#相对于C++还是简单很多,自从AutoCAD提供了托管代码二次开发API,就没写过一行C++代码了。

wwwh37911 发表于 2019-6-9 11:21:00

就cad二次开发上而言两者的区别,优缺点。

cairunbin 发表于 2019-6-9 23:11:00

由于长时间没有接触过C++了,对C++的最新进展完全不了解。因此,如果上面帖子关于C++的说法有任何错误,本人概不负责,哈哈。

edata 发表于 2019-6-10 12:29:00

C# 优点,开发效率高,开发难度低,开发环境容易搭建,可能只需要vs2019一个软件就能实现.net所有版本编译。
缺点,没有自定义实体,需要arx才能实现,程序的代码不够安全,比较容易被反编译,
c++,开发难度大,效率低,需要许多的知识点,环境难搭建,可能需要多个版本的vs或者编译器。
代码相对c#要安全一些,至少不是源码,有自定义实体,可以编译.net没有的版本,如cad2004,
c#能实现的,c++基本都能实现,
c++也能使用.net ,就是代码写起来费力。

春鸽带你飞 发表于 2019-6-11 20:57:00

都是高手!!!

wwwh37911 发表于 2019-6-13 17:07:00

谢谢两位大哥的热心回复!
页: [1]
查看完整版本: 请教论坛大神,arx与C#等net有什么区别!