Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
托管C++;(C+;+;/CLI)与C#/VB.NET 我已经广泛地使用了C语言,但是,我正在启动一个项目,我们的客户希望所有代码都用C++而不是C语言编写。这个项目将是托管(.NET 4)和本机C++之间的混合。因为我一直都把C to C++作为我的.NET需求,所以我想知道在使用C语言和管理C++之间是否有什么重要的区别?_C#_.net_C++ Cli - Fatal编程技术网

托管C++;(C+;+;/CLI)与C#/VB.NET 我已经广泛地使用了C语言,但是,我正在启动一个项目,我们的客户希望所有代码都用C++而不是C语言编写。这个项目将是托管(.NET 4)和本机C++之间的混合。因为我一直都把C to C++作为我的.NET需求,所以我想知道在使用C语言和管理C++之间是否有什么重要的区别?

托管C++;(C+;+;/CLI)与C#/VB.NET 我已经广泛地使用了C语言,但是,我正在启动一个项目,我们的客户希望所有代码都用C++而不是C语言编写。这个项目将是托管(.NET 4)和本机C++之间的混合。因为我一直都把C to C++作为我的.NET需求,所以我想知道在使用C语言和管理C++之间是否有什么重要的区别?,c#,.net,c++-cli,C#,.net,C++ Cli,对此有任何见解都将不胜感激 强>编辑< /St> >维基百科托管C++代码,说明新规范是C++ + CLI,并且“托管C++”被禁止。更新了标题以反映这一点。我用C++/CLI做了一个项目,我不得不说这是一个令人憎恶的项目。基本上,它是一个WinForms应用程序,用于管理员工、曲棍球比赛、团队间交易、日历等 因此,您可以想象我在表单上拥有的托管控件的数量:日历/日期时间选择器、组合框、网格等等 最坏的部分是只为后端使用C++类型,并使用托管类型作为前端。首先,您不能将std字符串分配给托管字符

对此有任何见解都将不胜感激


<>强>编辑< /St> >维基百科托管C++代码,说明新规范是C++ + CLI,并且“托管C++”被禁止。更新了标题以反映这一点。

我用C++/CLI做了一个项目,我不得不说这是一个令人憎恶的项目。基本上,它是一个WinForms应用程序,用于管理员工、曲棍球比赛、团队间交易、日历等

因此,您可以想象我在表单上拥有的托管控件的数量:日历/日期时间选择器、组合框、网格等等

最坏的部分是只为后端使用C++类型,并使用托管类型作为前端。首先,您不能将std字符串分配给托管字符串。你需要改变一切。显然你得把它换回来

每当我需要填写网格时,我就把我的C++集合序列化为一个类似于<代码>向量<代码>的东西,在我的UI库中检索并在其中循环,并制作新的DATAGIDRIN,将它们添加到网格中。使用C#和一些Linq to SQL,这显然可以在3分钟内完成

我在那个应用程序中得到了A+,但老实说,它真是糟透了。我简直无法想象其他应用程序对我来说有多可怜

<>我想如果我在C++中使用<代码>列表> <代码>(一个对象的托管列表),而不是总是在字符串的向量之间转换所有东西,那就更容易了。但是我需要保持C++的被管理的东西。p>
/由于使用了所有三个区域(.NET、C++/CLI和C++),我可以说在任何方面我都更喜欢使用.NET(通过C#或VB.NET)。对于应用程序,您可以使用WinForms或WPF(我发现后者要好得多,尤其是对于用户友好得多的应用程序)

C++/CLI的一个主要问题是,您没有.NET中所有优秀的语言功能。例如,C#中的
yield
关键字和lambda的使用(我认为C++/CLI中不支持这一点-不要让我这么认为)

然而,C++/CLI有一个很大的优势。也就是说,你可以创建一个桥来允许C和C++通信。我目前正在研究一个项目,其中很多数学计算和算法已经在C++中写了(多年),但是公司希望移动到基于.NET的用户界面。在研究了各种解决方案之后,我得出结论,C++/CLI在这方面要好得多。一个好处是,它允许我构建一个API,对于一个.NET开发人员来说,它的外观和工作方式与.NET类型一样


但是,对于开发应用程序的前端,我并不推荐使用C++/CLI。从可用性的角度来看(就开发人员使用它的时间而言),这是不值得的。一个大问题是为了“提高通用智能感知”(我认为是专门针对C++)。如果您还没有尝试过,我肯定会建议您签出WPF以获取应用程序。

C++/CLI是一种成熟的.NET语言,与其他.NET语言一样,它在托管环境中工作得非常好。就像在C语言中使用本地调用一样,可以是一个痛苦的交错,本地C++和托管C++会导致一些问题。有了这个说法,如果你使用很多本地的C++代码,我宁愿在C++上使用c++/CLI。有很多的东西可以被写,因为你不写C++/CLI,就像你写C++一样,也不写你好像在写C++。这是它自己的事情

我已经处理了几个C++/CLI项目,我要采取的方法实际上取决于将不同级别的应用程序暴露给本机C++代码。如果应用程序的大部分核心是本机的,并且本机代码和托管代码之间的集成点有点模糊,那么我将始终使用C++/CLI。C++/CLI中控件的好处将超过它的问题。如果你有明确的交互点,可以被修改或抽象,那么我强烈建议创建一个C++和CLI桥接层,上面有C++和C++。这主要是因为C#的工具比C++/CLI的相应工具更成熟、更普遍。话虽如此,我一直在做的项目是成功的,并不是对方所指的噩梦

我还要确保你理解客户为什么朝这个方向发展。如果这个想法是他们有一群C++开发者,他们想让他们更容易移动到写托管代码,我会向客户假定学习C可能不那么有挑战性,然后学习C++ +CLI。p>
如果客户机认为C++/CLI更快,这是不正确的,因为它们都编译为IL。但是,如果客户端有很多现有的或正在进行的本地C++开发,那么当前路径可能是最好的。p> …我知道这一点。我更喜欢寻找使用C++/CLI而不是使用C#和VB.NET在.NET框架中可能具有的怪癖或额外优点。例如,C++和VB.NET之间有一些小的差异,尽管它们都使用CLR。管理C++的唯一好的原因是互操作。事实上,您可以使用本机“thunks”(用于速度,比托管代码(例如加密)快得多)。IMO使用C++ + CLI纯模式是无用的。我设想这个项目向前推进的方式,管理C++将被用于大多数项目,但是,它可以很容易地使I