因为我是一个刚刚完成工程的初学者,并且我对 c、c++ 有很好的了解......我也想过学习 c#,但我发现 c# 4.0 已经发布......
- 我应该关心以前的版本吗?
- 您给初学者快速学习 c# 的提示是什么?
- 从 c,c++ 迁移到 c# 时要考虑哪些因素?
C# 4 基本上是所有其他版本的超集,所以如果您了解 C# 4,那么您肯定知道早期版本。另一方面,我认为值得知道哪个版本的内容。我的 C# in Depth 网站上有一些“虚张声势的指南”,其中提供了一些关于 C# 2 和 3 的信息——我很快就会为 C# 4 做一个类似的指南。请参阅此问题以获取每个版本中非常简短的功能列表。
至于从 C 和 C++ 迁移 - 尝试忽略你认为你知道的一切。有些位会相似,有些会完全不同。您应该尝试按照语言期望的方式工作,而不是对其应用 C++ 习语。
您可能想阅读Essential C# 4.0、C# 4.0 in a Nutshell或Accelerated C# 2010。我自己的书 - C# in Depth - 很快就会有第二版,涵盖 C# 4,但它确实是为已经了解 C# 1 的人设计的。
不,只要买一本关于 4.0 的好书。如果这本书是完整的(即,对于了解 3.5 的人来说,它是完整的),那么它就是完整的。
忘记以前的版本,除非特别要求(目前并非每个商业项目都将使用 4.0)。
尖端?买一本好书,阅读文档。
C/C++ - 欢迎来到托管内存世界。绕过垃圾收集方法。现在。绕过没有指针(你可以操纵)并且不要抱怨它 - 你越快适应那个环境,你感觉越快;)
我应该关心以前的版本吗?
是的。您至少应该知道旧版本没有 4.0 的哪些功能。
如果您在工作中使用 .NET,很有可能它们还不会达到 4.0。因此,您将需要知道可以使用哪些功能以及必须解决哪些问题。
您给初学者快速学习 c# 的提示是什么?
找一本好书,从头开始。
我会推荐Pro C# 2010 和 .NET 4.0 平台或C# In Depth: Second Edition
从 c,c++ 迁移到 c# 时要考虑哪些因素?
了解每个的命名约定和差异。
C/C++ 被编译为本机代码。C# 获得 JIT 编译。
C# 有内存管理。C/C++ 没有(至少不一样)。
C 不是面向对象的语言。C++/C# 是,但每个处理 OO 的方式略有不同。
这些差异将改变您编写/思考代码的方式。
我应该关心以前的版本吗?
是的你应该。我建议从 2.0 开始,这是所有未来版本的基础,然后逐步学习 3.0、3.5 和最近发布的 4.0 版本。
您给初学者快速学习 c# 的提示是什么?
像大多数语言一样,最大的技巧是使用它。开始编写一些小型应用程序以尝试利用通用语言功能,然后继续尝试您感兴趣的框架的不同领域。
我也是 C# 的初学者。我专注于新技术,因为大多数公司都想要最新的技术。所以我强调了 3.5(并简要浏览了 3.0 和 2.0)。奇怪的是,你不会使用 1.0 或 1.1 来开发一个新项目 如果我是你,我会专注于 4.0 并且对 3.5 有很好的理解
高温高压
我能给出的最好建议——买一本好书!查看 Wrox 系列 - 他们有非常好的书籍,可以让您快速入门。寻找类似“.NET 4 Beginning”的内容。
不——如果你知道原则,你就不必知道以前版本的所有细节,特别是如果你确信你只会使用新版本.. 但是如果你有时间和愿望- 了解更多信息永远不会有什么坏处,相信我 :)
祝你好运!
C# 4.0 是以前版本功能的超集。所以你的第一个问题的答案是“不,只是读一本 C# 4.0 的书”。
.NET 4.0 在以前版本的基础上增加了功能,即使它完全是一种新语言,您仍然需要了解“以前的”版本,因为它仍在行业中使用。好消息是您不需要学习某个版本,只需学习 .NET,然后查找该功能是否存在于以前的版本中。
学习 C# 就像学习任何其他语言一样 - 参加课程、创建宠物项目或边学习边学习(或全部学习)。
当从 C++ 迁移到 C# 时,最大的区别是垃圾收集的存在。幸运的是,c# 与 C++ 非常相似,因此您应该能够从第一天开始虚拟地读取(和写入)它。您应该能够找到一些差异(结构是与 int 类似的值),并且您有一个非常广泛的基类库可以使用。
学习所有 C# 版本会浪费您的时间。直接学习 C# 4.0,不要忘记 4.0 之前的版本。您使用的 IDE 的掌握程度非常重要。最重要的是,代码,代码,代码。
c、c++ 和 c# 是“兄弟姐妹”,所以你在熟悉的领域。
到目前为止似乎没有一个答案提到的一个因素是,如果您从头开始构建新的 .NET 4 应用程序,那么以前版本中的许多构造不再相关。
仅仅知道 .NET 4 是以前版本的超集是不够的,您还想知道以前版本的哪些区域基本上已经过时,这样您就可以避免它们并使用新的、更好的构造。
例如,不要使用ArrayList
,而是使用泛型List<T>
;不要使用Hashtable
,使用Hashset<T>
或Dictionary<T, U>
;使用新Task
类型而不是线程和同步原语来简化代码;等等等等