明经CAD社区

 找回密码
 注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 326|回复: 6

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

[复制链接]
发表于 2019-6-9 11:20 | 显示全部楼层 |阅读模式
如题,小弟初来乍到,望论坛老大们能不吝赐教,万分感谢!叩拜!
发表于 2019-6-9 23:06 | 显示全部楼层
你在.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++代码了。
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2019-6-9 11:21 | 显示全部楼层
就cad二次开发上而言两者的区别,优缺点。
发表于 2019-6-9 23:11 | 显示全部楼层
由于长时间没有接触过C++了,对C++的最新进展完全不了解。因此,如果上面帖子关于C++的说法有任何错误,本人概不负责,哈哈。
发表于 2019-6-10 12:29 | 显示全部楼层
C# 优点,开发效率高,开发难度低,开发环境容易搭建,可能只需要vs2019一个软件就能实现.net所有版本编译。
缺点,没有自定义实体,需要arx才能实现,程序的代码不够安全,比较容易被反编译,
c++,开发难度大,效率低,需要许多的知识点,环境难搭建,可能需要多个版本的vs或者编译器。
代码相对c#要安全一些,至少不是源码,有自定义实体,可以编译.net没有的版本,如cad2004,
c#能实现的,c++基本都能实现,
c++也能使用.net ,就是代码写起来费力。
 楼主| 发表于 2019-6-13 17:07 | 显示全部楼层
谢谢两位大哥的热心回复!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号  
©2000-2017 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2019-9-22 03:24 , Processed in 0.186435 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表