C# 是C++;和.NET一起用于银行、医疗保健和电信等领域

C# 是C++;和.NET一起用于银行、医疗保健和电信等领域,c#,c++,windows,programming-languages,architecture,C#,C++,Windows,Programming Languages,Architecture,或者我应该问,从C开始会有多大的帮助和益处++ 这可能看起来很重要,但对我来说有一定的意义,可能很少有人像我一样 我只是想知道,当你是.NET程序员时,学习C++、com和ATL有多重要? 我喜欢用.NET和C#进行编程。VisualStudio有它自己的魅力,即智能、颜色编码和其他漂亮的功能,这让我们沉迷其中 我在想,几乎我们可以用C#构建任何东西,但大多数情况下它仍然成立,但有时会滞后,比如: 当我尝试创建Shell扩展时,强烈建议使用非托管代码而不是任何托管代码。 此外,还有其他一些事情,

或者我应该问,从C开始会有多大的帮助和益处++

这可能看起来很重要,但对我来说有一定的意义,可能很少有人像我一样

我只是想知道,当你是.NET程序员时,学习C++、com和ATL有多重要?

我喜欢用.NET和C#进行编程。VisualStudio有它自己的魅力,即智能、颜色编码和其他漂亮的功能,这让我们沉迷其中

我在想,几乎我们可以用C#构建任何东西,但大多数情况下它仍然成立,但有时会滞后,比如:

当我尝试创建Shell扩展时,强烈建议使用非托管代码而不是任何托管代码。 此外,还有其他一些事情,如COM,ATL,这是优选的编码在C++中,而不是C。 我只在IT行业工作了4年,喜欢做解决方案架构师

所以,如果我用C++来集成我的当前COM项目,那么我需要你所有的输入,我的未来的风险是多么的重要/有帮助。

在医疗、银行和电信等公共领域中,有没有C++和.NET的实现。

问题(至少对于你提到的特定情况,比如shell扩展),试图“与.NET UI集成”是你真的不能。在托管代码中编写shell扩展不是一个好主意的原因是给定的进程在任何给定时间只能加载一个版本的CLR。如果两个shell扩展依赖于不同版本的CLR,并且它们都试图同时加载,那么它将失败。您不能在shell扩展的上下文中以任何方式或形式加载CLR,并且不能成为行为良好的shell扩展

我的建议是,在你真正有理由学习C++之前,不要去打扰C++(尽管C++是我最喜欢的语言)。但是当你学习C++时,把你的行李放在门口。在C++中有很多东西(如过度使用铸件、不断使用<代码>新<代码>等),而在C++中只是普通的<强>错误>强。如果你不尝试从CLR方面理解C++概念,你会更开心——因为C++没有运行。您可以使用您可能为C#学习过的一些设计模式,但这两种语言的底层语言和机器操作方式完全不同

对于新C或C++程序员来说,最令人困惑的差异可能是未定义行为的概念。C和C++标准是这样写的,不与特定机器绑定。这与Java或.NET之类的体系结构形成了鲜明对比,在Java或.NET中,语言实际上是根据虚拟机定义的(因此非常依赖于虚拟机)。这导致标准没有明确说明程序的正确输出应该是什么;而是说“然而底层机器通常会这样做”。如果你曾经处理过浮点数学,你可能会注意到这一点。虽然C有严格的和特定的规则,关于如何计算浮点数和在何处浮点,C和C++没有这样的条件。 一旦你了解了C++,你就可以转到COM和ATL了。COM的本质上是为了使C++类结构能够在一种语言(COM ABI)、机器(在同一系统上的32位和64个进程之间的编组等)中访问,而位置(DCOM提供RPC设施)是独立的方式。如果你不理解C++对象模型,那么你将在COM对象模型上遇到一个非常困难的时间,因为这两个模型非常相似。ATL是一组围绕COM基础的C++类模板,它只为您处理一些样板。 我只是想知道,有多重要 学习C++、COM和ATL 你是.NET程序员

这取决于你做什么。你更了解数据库。几乎所有严肃的应用程序都使用数据库

<>但是,C++与.NET,特别是C++ + CLI(托管变体)一起,非常有利于C++代码与托管代码的集成。通常这是唯一有效的方法。例如,如果您为市场数据引发事件,这一点很重要。频率超过100.000次。每秒


但这是一个利基市场。我在金融领域工作,C++使用和集成使用比在.NET中工作的人小,在应用程序上。

我会为此而受到抨击,但我认为,一般来说,C++和COM通常不被用于新的业务应用程序,出于多种原因,我可能倾向于同意Robert Harvey(因此得出结论:.NET开发者不必学习C++、COM和ATL),但是,对于它的价值,VisualStudio,具有它的所有智能和颜色编码的优点,也与C++一起工作。(如果你需要像我一样瞄准Win2k,你会被迫使用它)对于任何合理大小的C++项目来说,它都是很好的。“杰姆斯:我读到了这个评论,我想我在里面有点死了。”比利:-D,对于Wi2K问题,你可以从Visual Studio 2010中瞄准VC9工具链,这样你就可以利用新的IDE和工具,同时仍然瞄准老编译器。这是一个相当方便的特性。+ 1这都是很好的建议。我唯一的狡辩是,“过度使用强制转换”在C#中也可能是错误的。这不仅是因为做任何过度的事情都是不好的,而且因为大多数强制转换可能涉及装箱和拆箱操作,这需要时间。如果我没有指出可以编写快速代码,那我就是失职了(与业务应用程序一样,不一定是shell扩展)如果您对