从以下几个方面开始:
- 使用C#的命令提示符应用程序? - 使用ASP.NET制作Web应用程序? - 使用XAML/C#制作Silverlight应用程序? - WPF / Winforms桌面应用程序?
我不想过分关注某个特定领域,而是想在.NET Framework 4.0中学习一点点所有内容。学习.NET的最佳顺序是什么?
控制台应用程序显然是起点:用户界面是一个广阔的森林,在你开发出在野外找到路径的能力之前,试图穿越它是没有意义的。此外,在使用C#做其他任何事情时,您学习控制台应用程序时所学到的一切都是适用的。
接下来要学习的是如何构建用户界面。我对那些建议你学WinForms的人持有不同意见: 是的,关于如何使用它有很多信息,有很多工具,而且在其最简单的形式下,它相当容易理解。但是,WinForms存在两个问题。
首先,许多WinForms使之易于实现的功能实际上是非常糟糕的编程实践。在WinForms编程中,在同一类中混合业务和演示逻辑是正常的,而打破这种习惯需要相当大的努力,特别是因为数据绑定 - 在解耦数据模型与表现方面的关键工具 - 在WinForms中相对较少,而在WPF体系结构中则至关重要。WPF需要学习的内容更多,但你最终会编写出更好的程序。
其次,WinForms即将走向生命尽头。你不会看到微软投入更多资源来改进它。他们已经完成了。这并不意味着它将来不会有用 - 它会有用 - 但是它在软件开发生态系统中的整体渗透率,现在已经达到了最大值。
选择WPF的另一个原因是,你学习WPF时所学的大部分内容也适用于Silverlight,这打开了WinForms永远无法打开的门。
至于ASP.NET,除非需要,否则最好不要学习。
命令提示符可能是最简单的,因为您可以忽略消息和类似的内容,但当然您的功能非常有限。接下来是WinForms,它相对容易,因为您可以轻松地跟踪状态。
但这可能取决于您当前的经验,如果您已经有一些Web经验,那么WebForms可能比WinForms更适合您。
你是否需要开发或拥有一个应用程序?
如果是的话,请尽量详细地定义它,然后你就会有一组需要实现的目标。
一旦你有了这些目标,就可以确定最适合解决问题的技术。
例如,如果你有一个相当静态的UI界面,WinForms可能还可以,但如果你想要整合动画和其他视觉效果,那么你应该考虑使用WPF / Silverlight。
从命令行/控制台
应用程序开始。
为什么?
首先是实现面向对象概念的基础,但不涉及复杂的Web应用程序/Windows应用程序/服务等内容。
使用控制台应用程序
模板进行编程将使您远离不必要的复杂性,并且您可以集中精力研究框架和功能的内部工作原理。
完成后,如果已经探索了诸如System.Collections等功能/库,则应根据兴趣和以前的开发经验从广泛的开发领域中选择。
例如Web应用程序开发/桌面应用程序开发等。
这将帮助您决定进一步追求哪种技术,并与您的兴趣并行。例如,如果您对Web应用程序开发感兴趣,则可以选择Asp.Net WebForms / Asp.Net MVC
等,而无需浪费时间在Windows Forms或WPF
上。
希望这能帮到您。
当我说到最好的编程语言时,我指的是学习曲线最低、收益最高的语言。目前我不想过多地专注于某个特定领域,而是想要在.NET Framework 4.0中学习一点点所有的知识。
如果您已经在.NET上编程了一段时间,那么您就会知道上述两个句子是矛盾的,哈哈。
截至上次检查,.NET包含:
程序集 y = 15.1x + 17.3 108个
命名空间 y = 51.6x + 51 361个
类型 y = 2249.3x + 626.9 14123个
成员 y = 21343x + 7951.3 136009个
所以,即使你已经全职使用.NET编程一段时间了,你也只是触及到了表面! 你甚至没有提到你是否已经精通C#,但如果没有,你可以阅读Petzold的免费电子书来快速掌握它,因为这是Silverlight、ASP和WinForms编程中最常用的语言。 如果像我一样,命令行让你感到无聊,那么我建议你阅读"Head First C#"这本书,它会给你一个温和的介绍,让你了解C#和.NET的能力。
根据您指定的标准,这是我的评估:
命令行很容易学习,但你不能做太多事情,只能打印文本,所以在玩几个简单的程序后,你很快就想要进一步学习。
WPF/Silverlight是第二容易学习的技术,只要你先通过一些使用DataTemplates和ItemsControl的示例进行实践。一旦你熟悉了这些,你可以专注于学习C#和.NET Framework基类库的复杂性,或者你可以探索WPF的图形元素。
WinForms应该避免使用,因为它比WPF/Silverlight更难理解:在WPF/Silverlight中,你创建数据对象,然后绘制一个显示它们的视图,而且WPF/Silverlight处理所有的定位和布局。在WinForms中,你必须手动在数据对象和UI对象之间传输数据,并且必须明确地定位每个元素。WinForms的其他缺点是它正在迅速过时,并且它会迫使你采用一些非常糟糕的编程实践。
毫无疑问,ASP.NET是你列出的所有技术中学习曲线最高的,我会尽力尽可能地远离它!
当你准备从命令行毕业(可能在一周内),选择使用WPF或Silverlight并不是很重要。WPF稍微容易部署,技能也可以很好地转移,所以我建议从那里开始。
首先创建一个简单的WPF应用程序,其中包含一个带有按钮、列表框和一个或两个文本框的窗口。在您的UserControl中创建属性并进行绑定。然后开始尝试。有许多步骤指南可以帮助您入门。我发现Adam Nathan的书《WPF Unleashed》对初学者来说是一个非常好的资源。
如果可以的话,请获取Expression Blend的副本。您可以下载30天的试用版本。它在玩弄WPF的UI方面非常有帮助,并学习它们的工作方式,特别是资源、模板和动画。
最后一个提示:如果您发现了一本包含以下代码的书籍或博客,请逃之夭夭:
for(int i=0; i<10; i++)
{
Button b = new Button();
...
panel.Add(b);
}
对于最初的步骤,我建议使用命令行应用程序。
对于其他方面,请跟进WinForm应用程序。它们在教程等方面拥有广泛的网络覆盖,并提供涵盖基本和高级C#功能的各种问题和解决方案。
ASP.NET、Silverlight和WPF是那些基础(控制台和Winforms)的进一步扩展,实际上添加了另一组框架库。这些是你在掌握基础知识后可以学习的糖衣。
别误会我的意思,你也可以通过Silverlight或WPF应用程序学习基础知识。但WinForm几乎被每一个开发C#的人所熟悉,因此你更有可能在网络上(在SO或其他地方)找到好的答案来解决你可能遇到的困难问题。这里有很多比我更有经验的人,他们可以帮助你探索.NET框架的深度。
一旦你掌握了这些部分,就可以自由地探索新的领域 - 很快你将成为回答我关于WPF问题的人,而我对此一无所知;-)
在尝试控制台应用程序后,我首先推荐的用户界面是ASP.NET MVC框架。它易于编码,具有相对严格的设计模式,因此您不会犯太多错误,并且您可以在相对较短的时间内构建相当不错的网站。与其他技术相比,我个人学习速度非常快,但发现其可扩展性点非常好,让我保持了兴趣。