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.12.0变化很大的说;还有个缺点就是VC托管的语法没C#简洁感觉,有些时候代码量要大些;还有就是资源少,vs里的托管项目也没C#多少老了,起码web这块wpfwfwcf的项目都建立不了不过估计不是不能写就是没项目模板写写标准库,本机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托管代码也应该有垃圾自动回收功能吧?而且还能手动释放吧,是不是更强?不知道我说得对不?

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

但是vc的托管代码中也可以使用new和delete关键字,是怎么回事啊?char*p;p=newchar[8];deletep;

new和delete是给非托管的代码用的,不信你可以试试用new一个System.String看看托管的东西都得用gcnew
解决方案十一:
老说dll地狱,现实中有几个项目会复杂到有那个地狱的境界
解决方案十二:
微软的directx的wrapperassembly就是vc/clrmix编译的
解决方案十三:
引用9楼akirya的回复:

引用6楼yueyeli的回复:但是vc的托管代码中也可以使用new和delete关键字,是怎么回事啊?char*p;p=newchar[8];deletep;new和delete是给非托管的代码用的,不信你可以试试用new一个System.String看看托管的东西都得用gcnew

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

但是普通的类型都是可以在托管里面确实可以用new来分配内存呀,正如上面的例子,这个怎么解释呢?

.....普通类型既支持托管分配又支持非托管的内配。托管的类型只能用gcnew分配。
解决方案十五:
哦说的也是反正都差不多吧

时间: 2024-10-29 10:33:42

vc.net (托管)与c#.net比较,哪个好?的相关文章

问一个菜鸟问题:C++.NET与VC++有什么区别?

问题描述 学习C++.NET需要学习MFC吗? 解决方案 解决方案二:C++.NET与VC++有什么区别?C++.NET是托管C++,运行的时候需要得到CLR(.net运行环境)的支持.VC++是非托管C++,无需得到CLR(.net运行环境)的支持就能运行.解决方案三:补充下:C++.NET与VC++有什么区别?前者比后者多了托管代码,也就是C++.NET里也可以建立非托管项目,无需CLR的支持.解决方案四:C++.NET建立在.NET平台下解决方案五:.net框架下c++的执行效率到底怎么样

请高手进来指导下

问题描述 请问在VS中,如果做WEB项目是不是不能用VC(托管的也可以)作为后台语言,我的VS中选择语言框中只有VB和C#.如果能请问如何做??困扰了我好多天的一个问题,请知道一定给我说下,谢谢了. 解决方案 解决方案二:引用楼主sbdxh的回复: 请问在VS中,如果做WEB项目是不是不能用VC(托管的也可以)作为后台语言,我的VS中选择语言框中只有VB和C#.如果能请问如何做??困扰了我好多天的一个问题,请知道一定给我说下,谢谢了. 做web选c#或VB吧解决方案三:C#我是会的,只是想知道为

Net 实现纳秒级别计算

1)建立VC.NET 托管类库 using namespace System; namespace MLTimerDot { //得到计算机启动到现在的时钟周期 unsigned __int64 GetCycleCount(void) { _asm _emit 0x0F _asm _emit 0x31 } //声明 .NET 类 public __gc class MLTimer { protected: UInt64 m_startcycle; UInt64 m_overhead; publi

有关c# 调用vc++编写的非托管DLL、socket编程等相关知识的讲的比较详细的书籍

问题描述 有关c# 调用vc++编写的非托管DLL.socket编程等相关知识的讲的比较详细的书籍 学习c# 调用vc++编写的非托管DLL.socket编程等相关知识的讲的比较详细的书籍都有哪些?(最好是基于VS2008的) 解决方案 c#调用非托管C++生成的dllc# 调用 C++ 非托管 DllC#调用非托管dll 解决方案二: 这样一个知识点,最好是 Baidu/Google 查找来解决 书上的内容,没有网络上的丰富

COPYDATASTRUCT在托管VC++中怎么定义和接收数据呢

问题描述 对应消息WM_COPYDATA的结构体COPYDATASTRUCT在托管VC++中怎么定义和接收数据呢发现托管VC的代码网上太少了,在这个问题上耗了一天,万能的CSDN的大侠们 解决方案 解决方案二:托管c++可以像非托管一样用解决方案三:最好直接用吧,我后面会跟C#的系统交互,解决方案四:要传什么样的数据?最好是用非托管.

vc.net(托管)中使用mfc方便吗

问题描述 vc.net(托管)中使用mfc方便吗?.net做界面快,mfc底层功能强大,两个都想要,咋办? 解决方案 解决方案二:mfc搞界面快我相信搞底层的话还不如直接用api+stl方便解决方案三:你还是研究一下C++CLI吧,据说是专门为了满足你说的要求而开发的.解决方案四:VC.net是向下兼容的,对MFC的支持也很大呀.你在VC.net中使用MFC一点问题都没有,只是需要看一下字符集和语法定义之间的区别罢了.

C#调用VC++写的DLL时报错:无效的托管/非托管类型组合(Int16/UInt16 必须与 I2 或 U2 成对出现)

问题描述 函数原型:unsignedshortGX_GetMessageForWindows(unsignedshortWaitTime,PGX_MESSAGE_INFOpMessageBuffer)功能:获取USB语音盒的事件参数:WaitTime无意义,保留pMessageBuffer指向GX_MESSAGE_INFO结构的地址指针,用于存放返回的事件,GX_MESSAGE_INFO的结构定义如下:typedefstruct_GX_MESSAGE_INFO{USHORTMessageCode

.NET应用技巧:非托管COM组件的使用

众所周知,asp.net是基于通用语言运行库创建的,也就是所谓的托管执行环境.生成的代码称为托管代码.编译器能够从源代码的描述中产生元数据信息,而运行库又从元数据中获得托管代码的信息.而我们编写的组件一般是在非托管环境下创建的,这些组件往往不包含元数据信息,那么我们怎么在托管代码中使用这些元数据信息呢? 为了在托管环境中使用非托管代码,我们首先必须手工为这些现有的组件产生元数据信息.必须有一种工具能够产生元数据.能够从某个地方获得元数据.这个元数据的发源地就是类型库,事实上,今天所有的组件都有一

在VC中调用WebService

一.什么是WebService ? WebService其实就是一个基于网络的应用程序,它向外部程序提供一定的调用接口.外部(远程)的程序,可以经由Web对其进行调用. 二.WebService 的特性: 1.由于 WebService 经由web服务器发布,所以比DCOM而言,可以顺利穿过防火墙.这也是 WebService 的优点之一,可以说, WebService ,为分布 式应用的开发,提供了一个很好的平台. 2.对 WebService 的调用,是通过SOAP协议进行的.简单对象访问协