我已经在Linux上使用C ++专门编写了一段时间。在我目前的工作中,它是一个以C#为主要语言的Windows商店。我已经重新训练自己使用Visual Studio而不是emacs(主要原因是VC中的集成调试器,VC中的emacs模式帮助),设置Cygwin(因为我不能没有shell)并且拾取托管语言的绳索。您认为我应该检查哪些工具,书籍,网站(除了MSDN)或陷阱,以使自己成为更高效的Windows / C#编码器?
答案 0 :(得分:15)
从C ++切换到C#时要考虑的第一件事是大多数情况下共享一些表面语法,但是当您深入研究.Net时,编程范式的差异会变得越来越大。
在开始编程之前了解C#核心编程范例,否则你可能会陷入用C#编写C ++程序的陷阱,这不是长期最好的想法。 最习惯的最重要的事情是:
首先从一本通用的.Net书开始,向您介绍所有这些概念。我首先推荐一本关于阅读教程和文章的书,这样你就可以在最后得到一个完整的.Net 图片。互联网上的文章可能无法实现这一点。 我读过的最好的通用.Net书:
Simon Robinson,Christian Nagel,Karli Watson,Jay Glynn,Morgan Skinner,Bill Evjen
第二,既然你是来自C ++背景,那么你习惯于接近金属并且思考方式与硬件的工作方式(原始内存管理(指针,内存分配等)接近)我可以只推荐一本书,它将真正揭开神秘面纱 .Net是什么以及它的作用:
Jeffrey Richter的
我不能强调这本书对于每个.Net开发人员来说都是如何好,尤其是来自C ++,同时也是我读过的最好的.Net书籍之一。这本书非常乐于阅读并涵盖以下主题:
这是我最好的建议我可以在最短的时间内让任何人成为专家C#开发人员。
答案 1 :(得分:4)
由于您已经知道如何使用C ++编程,请查看:
A Programmers Introduction to C# 2.0,Eric Gunnerson和Nick Wienholt
语言参考和一般.net信息之间的平衡。
类似地: Don Box和Chris Sells Essential .NET, Volume I: The Common Language Runtime
非常有趣的“幕后”网络书(但为.net版本1编写,所以可能有点过时了。)
答案 2 :(得分:2)
阅读.Net中的垃圾收集。来自C ++土地的人习惯于明确的内存分配和管理。在C#中,显式内存管理几乎不存在。
您应该检查的另一个主题是C#泛型和C ++模板之间的区别。但是,我没有一个很好的链接。
根据您正在使用的产品,您可能不得不求助于从C#调用Win32 API函数。这是通过P / Invoke完成的,所以你可能也想读一下它。如果你必须真正使用它,http://pinvoke.net是大多数Win32 API的非常有用的C#声明集合。
您可能还想学习至少COM的基础知识,因为C#/。Net应用程序通常选择/需要重用来自第三方供应商的组件,这些组件通常作为COM组件实现。 COM是一个复杂的话题。我最喜欢的书是关于COM和Essential COM by Don Box和专业DCOM by Roger rimes。我会从图书馆借用这些,因为您需要阅读的只是前几章(除非您想深入了解)。
如果要编写客户端应用程序,则必须对Windows,消息和消息队列有基本的了解。您将使用Winforms of WPF / XAML,这两种技术都可以很好地隔离您的详细信息;但是为了能够编写好的代码,你需要知道幕后的内容。我不确定这本书会有什么好处,但MSDN有很多信息。
答案 3 :(得分:2)
当我第一次使用C#时,我的背景主要是C / Unix和Python以及一些java和尘土飞扬的2000年代复古VB6。我对使用Java所做的工作熟悉托管运行时,而.Net API与早期的MS API有一些类似的外观。
我发现Troelsen的Pro C# and the .Net 2.0 Platform是一个非常好的C#/。Net资源。现在有更多的新版本。
答案 4 :(得分:2)
查看petzold的dotnet book zero。这可能有所帮助。
答案 5 :(得分:0)
获取Resharper的副本。它可能是直接编码的单一最佳生产力工具。
答案 6 :(得分:-1)
不应该是CLR的基础吗?并不应该使用哪种.NET语言并不重要?如果我查看.NET文档,我可以决定是否要查看VB.Net,C#或C ++中的内容。所以,如果您了解C ++,为什么不应该使用“托管C ++”?
此致 弗里德里希