我已经专门在带有C++的Linux上写了一段时间的代码。在我目前的工作中,这是一家以C#为主要语言的视窗商店。我重新训练自己使用Visual Studio而不是emacs (主要原因是VC中的集成调试器,VC中的emacs模式有帮助),设置Cygwin (因为我不能没有shell ),并掌握托管语言的诀窍。
发布于 2008-09-25 08:55:22
从C++切换到C#时要考虑的第一件事是,大多数情况下共享一些表面语法,但随着对.Net的深入研究,编程范例的差异会越来越大。
在开始编程之前先了解C#核心编程范例,否则您可能会陷入用C#编写C++程序的陷阱,这在很长一段时间内都不是最好的主意。要习惯的最重要的事情是:
首先,从介绍所有这些概念的通用.Net书籍开始。首先,我推荐一本书,而不是阅读教程和文章,这样你就可以在最后对.Net有一个全面的了解。互联网上的文章可能无法做到这一点。我读过的最好的通用.Net书籍:
by Simon Robinson,Christian Nagel,Karli Watson,Jay Glynn,Morgan Skinner,Bill Evjen

其次,由于你有C++背景,而且你习惯于接近金属的工作方式,并且以接近硬件工作方式的方式思考(原始内存管理(指针、内存分配等)),我只能推荐one 一本书,该书将真正揭开.Net是什么以及它能做什么的神秘:
杰弗里·里希特的

我再怎么强调这本书对每个.Net开发人员来说都是多么的好,尤其是来自C++,同时也是我读过的最好的.Net书籍之一。这本书纯粹是一种阅读的乐趣,涵盖了以下主题:
<>F237
这是我最好的建议,我可以给任何人在最短的时间内成为一个专家C#开发人员。
发布于 2008-09-25 05:30:17
既然您已经知道如何在C++中编程,请查看:
“A Programmers Introduction to C# 2.0”,作者: Eric Gunnerson和Nick Wienholt
语言参考和一般.net信息之间很好的平衡。
类似的: Don Box和Chris Sell的Essential .NET, Volume I: The Common Language Runtime
非常有趣的“幕后”网络书籍(但是是为.net版本1写的,所以可能有点过时了)。
发布于 2008-09-25 05:37:59
阅读有关.Net中的垃圾收集的内容。来自C++领域的人们习惯于显式的内存分配和管理。在C#中,显式内存管理实际上是不存在的。
您应该了解的另一个主题是C#泛型和C++模板之间的区别。不过,对于这个问题,我没有一个很好的链接。
根据您正在使用的产品,您可能需要从C#调用Win32 API函数。这是通过P/Invoke完成的,所以您可能也想要阅读一些关于它的内容。如果您必须实际使用http://pinvoke.net,那么对于大多数Win32 API来说,它是一个非常有用的C#声明集合。
您可能还希望至少了解COM的基础知识,因为C#/.Net应用程序经常选择/需要重用第三方供应商提供的组件,这些组件通常实现为COM组件。然而,COM是一个复杂的话题。我最喜欢的关于COM和Essential COM的书,由Don Box和Roger rimes写的Professional DCOM。我会从图书馆借这些书,因为你只需要读前几章(除非你想深入了解)。
如果您要编写客户端应用程序,则有必要对窗口、消息和消息队列有基本的了解。您将使用WPF/XAML的Winforms来完成这些工作,这两种技术在将细节与您隔离方面做得很好;然而,为了能够编写良好的代码,您需要知道幕后发生了什么。我不确定这是一本好书,但MSDN有很多信息。
https://stackoverflow.com/questions/131589
复制相似问题