当前位置:编程学习 > C#/ASP.NET >>

vc.net (托管)与c#.net比较,哪个好?

vc.net (托管)与c#.net比较,哪个好?


习惯了vc++,会用 C#.net,但是就是不习惯c#的风格,还有就是没有指针,垃圾回收。

想用vc.net(托管),可是资料特别少,不知道有什么缺点?大家都谈谈 --------------------编程问答-------------------- vc.net托管编程的时候 最好纯托管,这样就跟C#差不多了。
要是和本地代码混合的话交互的部分会累死人的。 --------------------编程问答-------------------- 首先:
1. C#中取消了指针操作,因为指针操作虽然灵活,但是,非常容易引起内存方面的问题,我想楼主应该有深刻的理解,换句话讲,如果你非要使用指针也不是不可以,只要使用非托管代码就OK了,但是这样的话,需要对其代码的安全性有所保证。
2. C#中的垃圾回收是自动完成的,不需要像C++中手动清楚各种对象,这些工作都交给了垃圾回收器自动完成,其有一套自己的处理各种对象资源释放的机制,楼主可以自己了解一下,从安全角度来说,垃圾回收器可以满足我们的需要。
3. 当然,很多应用,尤其是许多的com仍旧还是用C++开发,一方面是因为其灵活的代码能力,还有就是已经使用C++积累了相当一部分的程序资源,不能一下子说放弃就放弃了,而且,有很多人仍旧抱着C++比C#更加安全的指导思想,种种原因吧,但就从一个很简单的dll 地狱,应该就可以看出C#是一种发展式的语言,不是么?

个人浅见,与君共享~ --------------------编程问答-------------------- vc.net (托管)与c#.net比较,哪个好? 

:都一样的都是用的.net 框架;

习惯了vc++,会用 C#.net,但是就是不习惯c#的风格,还有就是没有指针,垃圾回收。 

:c# 有指针和VC不太一样就是 VB 没有才是真的、垃圾回收如果托管了都一样的

想用 vc.net(托管),可是资料特别少,不知道有什么缺点?大家都谈谈

优点是可以和本机代码直接互相操作,而且可以在一个项目里混合写托管的和非托管的
,缺点是编译完成后的dll等很多混淆器混淆不了,不过VC托管本来就很乱反编译后
不混淆也很乱,还有就是VC托管视乎不够成熟,1.1 2.0 变化很大的说;
还有个缺点就是 VC 托管的语法没C# 简洁感觉,有些时候代码量要大些;

还有就是资源少,vs 里的托管项目也没 C# 多少老了,起码web这块 wpf wf wcf 的项目都建立不了
不过估计不是不能写就是没项目模板
写写标准库,本机exe,服务还可以; --------------------编程问答--------------------
引用 2 楼 guilin_gavin 的回复:
首先: 
1. C#中取消了指针操作,因为指针操作虽然灵活,但是,非常容易引起内存方面的问题,我想楼主应该有深刻的理解,换句话讲,如果你非要使用指针也不是不可以,只要使用非托管代码就OK了,但是这样的话,需要对其代码的安全性有所保证。 
2. C#中的垃圾回收是自动完成的,不需要像C++中手动清楚各种对象,这些工作都交给了垃圾回收器自动完成,其有一套自己的处理各种对象资源释放的机制,楼主可以自己了解一下,从安全角…



1、c#可以使用非托管吗?还能用指针?
2、垃圾回收是.net的clr的功能,vc.net托管代码也应该有垃圾自动回收功能吧?而且还能手动释放吧,是不是更强?

不知道我说得对不? --------------------编程问答--------------------
引用 4 楼 yueyeli 的回复:
1、c#可以使用非托管吗?还能用指针? 
2、垃圾回收是.net的clr的功能,vc.net托管代码也应该有垃圾自动回收功能吧?而且还能手动释放吧,是不是更强? 

不知道我说得对不?


1 C#有unsafe关键字,使用了他就可以使用指针了.
2 vc.net托管代码 是使用gcnew分配托管对象的. 但没有对应的删除操作.你觉得该如何手工释放
--------------------编程问答-------------------- 但是vc的托管代码中也可以使用 new 和delete关键字,是怎么回事啊?
char* p;
p=new char[8];
delete p;
--------------------编程问答-------------------- 没有哪个好哪个不好的说法了
都是一家的东西。
主要是楼主习惯那个的问题了。
建议还是直接使用c#,如果要写非托管代码的话就用c++
偶也是从c++过来的 --------------------编程问答-------------------- 没有纯粹的好和不好,假设某个不好,为什么还有人用呢?呵呵 --------------------编程问答--------------------
引用 6 楼 yueyeli 的回复:
但是vc的托管代码中也可以使用 new 和delete关键字,是怎么回事啊? 
char* p; 
p=new char[8]; 
delete p; 

new 和delete 是给非托管的代码用的,不信你可以试试用new一个System.String看看
托管的东西都得用gcnew --------------------编程问答-------------------- 老说 dll 地狱, 现实中有几个项目会复杂到有那个地狱的境界 --------------------编程问答-------------------- 微软 的 directx 的 wrapper assembly 就是 vc /clr mix 编译的 --------------------编程问答--------------------
引用 9 楼 akirya 的回复:
引用 6 楼 yueyeli 的回复:
但是vc的托管代码中也可以使用 new 和delete关键字,是怎么回事啊? 
char* p; 
p=new char[8]; 
delete p; 
 
new 和delete 是给非托管的代码用的,不信你可以试试用new一个System.String看看 
托管的东西都得用gcnew



但是普通的类型都是可以在托管里面确实可以用new来分配内存呀,正如上面的例子,这个怎么解释呢? --------------------编程问答--------------------
引用 12 楼 yueyeli 的回复:
但是普通的类型都是可以在托管里面确实可以用new来分配内存呀,正如上面的例子,这个怎么解释呢?

.....
普通类型既支持托管分配又支持非托管的内配。
托管的类型只能用gcnew分配。
--------------------编程问答-------------------- 哦 说的也是
 反正都差不多吧
补充:.NET技术 ,  VC.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,