本文写给华科电气学院软件俱乐部的新人们
如果你之前就对c#有了解,你应该知道c#需要一个运行时才能运行。而目前来讲,主流的运行时主要有三个不同的版本:.Net Framework, Mono 和 .Net Core。.Net Framework只能在window上运行,而且是即将被 .Net Core替代(或者说合体)的产物,而Mono一开始不是微软官方开发的,bug比较多,所以我们统一使用 .Net Core来进行开发。大家找教学和创建项目的时候一定要注意这几个 .Net版本的差别,别搞错了。
本教程大部分内容直接使用微软官方文档。尽管微软的文档非常的好,但是这些文档的中文实际上是机翻。。。又条件的同学可以把语言改成英文,和中文对照进行阅读。英文水平在编程中是很重要的。
首先,想要使用一门语言开发程序,我们需要配置它的开发环境。 这里我建议新手使用visual studio开发。当然,如果你对自己能力很有自信,也可以选择visual studio code。具体的环境配置教程可以参考MSDOCS,在这个教程中,如果你使用vs就直接看使用 Visual Studio 安装 的教程。
注意:所有和Docker相关的教程全部跳过!
在MSDOCS网站上,根据你的电脑和开发工具,选择匹配的教程,创建你的Hellow World程序,验证你的开发环境已经正确安装。
如果你的开发环境已经配置无误,那么就正式开始学习c#吧
首先,我们从MSDOCS的c#教程看起。你可以直接在这里边一直往下看,边看边自己尝试,也可以点进去微软提供的交互式教程链接,先在浏览器理体验一下交互式教程。请注意,在教程中的 .net cli的意思就是命令行,如果你用visual studio的话是不需要输入这些命令的,直接点击debug或者运行按钮就行了。这一块新手可能会有点懵,如果有问题随时去群里提出。
如果你觉得上方的很简单,或者基本可以理解,那么恭喜你,你可以开始尝试网络编程了(web应用),请去这里看教程。
学习了上方内容之后,请完成一下内容。本周周末检查。思考题选做。
简单题:实现部分linq功能
思考题:能描述一下你对Asp .Net Core结构的理解吗?
Linq是继承语言查询的简称,它实际上不是专指一个库,而是指一系列采用相同设计思想的查询扩展方法库。它有很多种不同的实现,能在不同情况下自动使用不同的实现来实现最大化的运算效率。Linq性能强大,比SQL简单,但是查询能力甚至高于SQL,应用范围也更广,而且通过Linq to SQL技术甚至可以解决SQL注入的危险。更多信息参见Linq-MSDOCS
Linq属于扩展方法,不了解扩展方法的同学请自行阅读上方材料。
现在,我们需要你自行实现最简单的Linq功能。要求:
支持泛型(泛型是人类进步的阶梯~~)
至少实现 Where<T>()、Select<T>()、First<T>()、Count<T>() 这三个方法
任何实现 IEnumerable<T> 接口的数据结构都可以使用你写的linq
给泛型加条件:要求只有具有一个叫Score,类型为int的变量的类可以做为泛型
针对上一条功能,设计一个特殊排序方法叫OrderByScore(),将这个IEnumerable<T>按照Score排序
粗体是必须完成内容,普通字体为加分内容。
本文章使用limfx的vsocde插件快速发布