需要一份快速的C#教程,适用于(短期)非.Net程序员。

24

我在一家大公司的研究部门工作,我们使用 .Net 平台来构建我们的原型(这意味着如果原型“有用”,产品团队就会重现我们的工作)。

我们还为我们的项目招聘实习生。其中一些实习生主要从事研究工作,因此编写代码较少。但无论如何,实习生需要使用 C# 或 F# 进行编码。他们中的大多数人之前没有任何 C# 经验。他们是高年级本科生或研究生,并且通常了解一些 Java 和 C++。但他们通常没有接受过任何关于具有工业质量的编程的正式培训。

最难的问题是快速教他们 C#/.Net,因为在 3 或者 6 个月的实习期间,他们应该专注于解决自己的研究问题。此外,他们确实需要了解一些良好的 C# 实践方法,否则他们实习期间的代码库在实习后就无法重复使用。

我的学习 C# 的方式与其他人不同(我先学习了 F#,然后从头到尾阅读了 CLR via C#Effective Java)。所以,我想向经验丰富的 C# 用户请教一个短期(比如说 2 或者 3 天)的 C# 教程。非常感谢!

5个回答

9
要么让他们购买以下两本书,要么为他们购买:Essential C# 4.0C# 4.0 in a Nutshell。如果你真的关心他们的编程风格,就像你说的那样,还应该给他们买这本书: Effective C# 2nd ed.
假设他们已经知道如何一般性地进行编程(例如 Java / C ++),通过使用这些书籍组合,他们可以在几周内变得更有生产力。至少在低层级别上,您可以使用 Effective C# 指南来帮助促进可管理的代码。

8

4
我建议您查看微软网站上的教程:C#教程

2

2

为他们提供一系列简单的示例程序。

一个简单的控制台应用程序,包括一些数据输入、输出、string.format、string.isnullorempty、getappconfig、类型转换、使用datatables的简单sql连接和查询,以及使用datareader、reflection等的另一个示例。

另外还有一些关于XML和/或JSON序列化、system.text.encoding、system.text.regularexpressions、directorywachter、system.drawing、system.drawing.imaging等的示例。

其他示例包括iTestSharp、sharpziplib、excelpackageplus、nhibernate、BouncyCastle(OpenPGP)等。

每个控制台、WinForms、Windows服务、Web服务授权都有一个示例程序。 WinForms包含下拉菜单、复选框、文本字段(+多行)、富文本控件、dataview、databind、treeview。

一个使用webReferences的示例应用程序,例如ReportingService WebService。 一个HTTP模块(例如IP阻止)。 一个使用SOAP扩展的示例应用程序(例如加密)。

然后是一个带有DropDowns、CheckBoxes、TreeViews和PostBacks的ASP.NET页面。 还有一个使用ASP.NET MVC和AJAX而不是WebFroms的示例。

JQuery、JQuery uploadify的示例应用程序。

甚至更好的是,让其中一位学生为所有这些编写一系列简单的示例程序。供其他学生参考。告诉他们使用Google查找详细信息,如果有问题可以使用stackoverflow。
其他主题:事件、函数指针(委托)、接口、CodeDom编译器、LINQ、可空类型、属性、注册表、文件系统、迭代器、http get/post请求、不安全代码和指针。

IMO的例子只能作为补充,而不能替代真正的解释。 - CodesInChaos
@CodeInChaos:他们不应该需要关于循环、if语句等的解释。在我看来,唯一需要解释的问题是线程安全和带指针的不安全代码。此外,你不能期望有人在3天内学会像C#这样复杂的编程语言,这个想法很肤浅而且不可能。为了正确地编写一个加密的Web服务,需要一个星期的时间,另一个星期用来编写一个可以正确设置权限、生成用户并将该用户添加到某个组的安装程序。 - Stefan Steiger
@CodeInChaos:使他们能够快速编写正确的程序的唯一方法是提供给他们骨架,他们只需添加功能,无需担心概念,例如Web服务中的加密,或者他们不需要编写类来添加用户或将此用户添加到组(本地化组名!)。但是,您肯定会遇到问题的情况是,他们不知道SQL中允许什么,以及出于性能原因应该避免什么...如果问我的意见,我告诉你雇佣程序员短期是个非常糟糕的主意,这行不通。 - Stefan Steiger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接