我已经在Linux上使用C++专门编写了一段时间.在我目前的工作中,它是一个以C#为主要语言的Windows商店.我已经重新训练自己使用Visual Studio而不是emacs(主要原因是VC中的集成调试器,VC中的emacs模式帮助),设置Cygwin(因为我不能没有shell)和拾取托管语言的绳索.您认为我应该检查哪些工具,书籍,网站(除了MSDN)或陷阱,以使自己成为更高效的Windows/C#编码器?
从C++切换到C#时要考虑的第一件事是大多数情况下共享一些表面语法的事实,但是当您深入研究.Net时,编程范式的差异会变得越来越大.
在开始编程之前了解C#核心编程范例,否则你可能会陷入用C#编写C++程序的陷阱,这不是长期最好的想法.最习惯的最重要的事情是:
自动内存管理和垃圾收集,包括配置模式.了解基础知识和陷阱.
.Net中的类,接口,结构和原语是什么,以及它们与C++相比的行为方式.
事件,委托,属性,lambda表达式在来自C++时都是一些新概念.
.Net泛型和模板之间的差异.
.Net中的字符串,数组,自定义属性,反射,异常和线程基础知识,所有这些都在.Net中大量使用,您必须了解它们的复杂性以便有效地使用它们.
Winforms和ASP.Net中的GUI编程(可能在WPF之后),组件,控制器,数据绑定..Net GUI模型.
首先从一本通用的.Net书开始,向您介绍所有这些概念.我首先推荐一本关于阅读教程和文章的书,这样你就可以最终了解.Net的全貌.互联网上的文章可能无法实现这一点.我读过的最好的通用.Net书:
专业C#,第3版.Simon Robinson,Christian Nagel,Karli Watson,Jay Glynn,Morgan Skinner,Bill Evjen
第二,因为你是来自C++背景,而且你习惯于接近金属并且思考方式与硬件的工作原理(原始内存管理(指针,内存分配等)接近)我只能推荐一个这本书将真正揭开 .Net是什么以及它的作用:
CLR通过C# by Jeffrey Richter
我不能强调这本书对每个.Net开发人员的好处,特别是来自C++,同时也是我读过的最好的.Net书籍之一.这本书非常乐于阅读并涵盖以下主题:
.Net执行模型(从MSIL到本机代码)
内存管理(.net运行时和垃圾收集器如何管理内存,堆布局,内存生成,终结,大对象堆)
设计类型
装配加载,反射,应用领域
还有很多 ...
这是我最好的建议,我可以在最短的时间内成为专家C#开发人员.