1 如何学习上位机
2 .NET开发环境的搭建和使用
2.1 菜单栏
【文件】–》新建项目–>找到我们需要的项目类型
在新建项目窗口中,我们新建的项目要求可以在这里选择:
(1)版本的选择:建议大家选择4或者4.6
(2)选择开发语言:一般都是C#
(3)项目类型:初学阶段一般都用"控制台"程序。仅仅是学习需要。
(4)项目的名称。要有意义。
(5)位置:项目所有文件的保存位置。建议不要使用中文目录。
(6)解决方案名称:默认和项目名称一样。
最后确定即可。
【视图】–>可以显示各种窗口。
【调试】–>程序运行的入库(调试程序的入库)
调试:也就是尝试编译和运行程序。调试主要是我们开发阶段的选择,用来观察我们编写的程序。
F5键必须会使用。
【工具】–>选项,在这里可以对开发环境全局进行配置。
2.2 工具栏
【保存】:是对当前打开的文件保存。Ctrl+S随时保存。
【全部保存】:是对当前项目中打开的文件全部保存。
提示:记住Ctrl+k+D 当前类的所有代码自动对齐!
【Debug】:调试选项,开发中我们一般都用这个。
【Release】:发布选项,所有项目开发和调试完毕才使用的选项。
【启动】:启动编译器,编译当前缩写的代码,生成相关的文件。
【注释/撤销注释】:注释就是对代码的说明。注释是不参与程序编译。
2.3 功能窗口
【工具箱】:是在Windows程序中或者WebForm程序中,用来拖放控件的。
【调试相关窗口】:主要是程序调试中我们观察数据用的。
PS:局部变量等窗口,需要在启动调试后,通过“调试”–>“窗口”再找到对应的窗口选项。
【解决方案】:主要提供程序的统一编译。
【属性窗口】:主要是对可视化的窗体和控件属性进行设置,我们用户设置完属性后,
后台自动生成相关代码。
2.4 控制台项目结构
1.解决方案名称,一个解决方案里面可以有多个项目。
2.当前项目结构:
(1)Properties文件夹:(属性文件夹)
AssemblyInfo.cs文件:里面的配置信息主要是用来保存项目的版权信息。
PS:在C#项目中,我们代码文件都是以.cs结尾。
(2)Program.cs 文件: 是项目的启动入口文件。
(3)我们自己添加的其他类文件(这个是我们后续学习的重点)
3.引用:就是我们当前项目所需要的.NET底层模块。
因为底层模块已经被微软工程师封装好了,我们只需要使用即可。
如果我们自己开发中,需要一些内容,但是没有自动引入,需要我们自己添加。
不同项目所需要的引用是不同的。
引用只是说我们开发当前项目可以使用哪些内容(模块)。
4.命名空间
一个模块可以包含若干命名空间。
我们在类中想使用哪些内容,必须引入对应命名空间。
命名空间的概念:微软底层的类或我们自己添加的类,在实际开发中会很多,为了管理我们把不同的类放到不同的命名空间里面。
使用using关键字引入,引入后,我们可以直接使用这个命名空间下面的所有类。
如果不使用using引入命名空间,那么我们使用类的时候,就需要通过“命名空间.类名”方式使用。
//项目的命名空间,默认和项目名称一样
namespace MyFirstApp
{
}
一个类必须要包括在指定命名空间里面。
class Program
{
}
//class表示一个类,我们开发者写的代码,都是在class里面,class是我们程序的基本单元。
static void Main(string[] args)
{
}
//程序的入口方法,也就是程序启动的时候,首先执行的内容。
这个方法是静态的,不要修改。
控制台类Console类。
Console.WriteLine(“在这里写上需要输出的内容”);
Console.ReadLine()获取用户通过控制台输入的内容。
5.C#程序编写的基本规范
1.在C#中严格区分大小写。
2.每条语句写完后,要用分号结尾。
3.在代码编写中,一定要使用“英文半角”
2.5 .NET项目编译、运行过程
1.非托管代码
特点:程序必须依赖于操作系统,而且编译器生成的程序文件包含的仅仅是适用于特定CPU架构的机器指令。
不足:不同的操作系统需要单独编写代码,重复低效。
2.托管代码
最早就是Java跨平台设计思想,.NET从2003年开始,而且发展更新迅速。
特点:
(1)开发者编写的代码编译后,不依赖于操作系统和特定的CPU架构机器指令,而是依赖于一种
中间的,在各个操作系统上都能执行的代码,这种代码Java里面叫做ByteCode(字节码),.NET里面我们称之为MSIL指令(微软中间语言)。
(2)不管是Java的字节码还是.NET的**MSIL**指令仍然需要最终被翻译成CPU能够执行的机器指令。这个功能是由一个运行在特定操作系统上的软件来完成,这个软件我们称之为“**虚拟机**”。.NET Framework类库,后面我们会慢慢学习,CLR这个我们也会介绍。
MSIL查看工具(IL DASM)
VS2010阶段,安装目录里面就有。
VS2013之后,我们需要自己查找,在安装目录里。
exe文件:
编译后生成的可执行文件,里面是IL指令。项目发布或给用户可以直接运行的程序。
dll文件:
编译后生成的动态链接库文件。里面也是IL指令。
pdb文件:
Program Debgu DataBase(程序调试数据库)文件。
包含了编译后程序指向源代码的位置信息,用于调试的时候定位源码,方便调试。
vshost.exe文件
用于提高调试效率的宿主进程。
VS运行调试的时候,其实是打开的这个文件。这个程序可以让VS跟踪调试信息。
vshost.exe.manifest
是一个XML文件,用于COM类,接口库的绑定和激活,这些信息以前是在注册中。
2.6 其他小技巧强调
1.Main方法
(1)作用:程序入口方法,从这里开始运行。
(2)要求:一个程序只能有一个Main()方法,首字母要大写、返回值为void或者int、命令行参数是可选的。
(3)Main方法的形式
形式1: static void Main(string[] args){ }
形式2: static int Main(string[] args){ }
形式3: static void Main(){ }
形式4: static int Main(){ }
2.C#中的注释
(1)作用:用来说明代码的作用,帮助程序员理解程序。注册是不参与编译。
(2)单行注释、多行注释、**文档注释**()三个斜线
3.代码折叠器region
作用:将多行代码折叠,使得代码可读性增强,容易查询。
要求:必须成对出现。
例:
4.程序中编写问题小节
(1)程序语句:
大小写:C#严格区分大小写,比如Class和class是完全不一样的。
位置:类必须在指定的命名空间中,方法、属性、字段的定义,必须放到类中。
普通语句的执行,必须放到方法中。
(2)引号
使用双引号"",要求英文半角,并且成对出现。
字符串的定义必须使用双引号。
带空格的字符串" "和不带空格的字符串""是完全不一样的。
(3)注释
关键性的语句需要添加注释。
类名称前应该使用多行注释(文档注释),说明类的功能和使用方法。
复杂方法前面应该使用文档注释,说明方法的功能,参数的含义,返回值信息等。
文档注释一方面给我们开发者日后做参考,还有就是给调用者提供智能提示。
2.7 通过实例比较程序编写的两种思想
1.程序的基本概念
(1)生活化理解:人们完成一件事情,并得到一个结果,从做事开始到得到结果的步骤,就是程序。
(2)好处:对于重复性的事情,规定好步骤,孰能生巧,提高效率。
(3)计算机程序:就是人们通过计算机完成一个或多个任务,这个任务需要编写计算机能够执行的指令。这些指令就是程序。
程序语言:二进制机器指令;汇编语言;C语言;C++;Java、C#...
所有高级语言,最终都要被翻译成二进制指令(1,0)才能被计算机执行。
高级语言到低级语言的“翻译官”,已经由语言开发工程师完成了。
2.程序编写的两种思想PK
面试题目:请基于OOP,完成一个简单的计算器。(A,B)
(1)面向过程(Procedure Oriented)是一种以“过程/流程”为中心的编程思想。
方法:分析问题,总结步骤,按照一定的流程完成任务。
缺点:随时项目规模增大,业务复杂度提高,基于一个个函数编写,会变得非常杂乱!
后续维护几乎无法完成,况且任务本身也不见得能完成。
适合:嵌入式开发,比如C语言。需要和硬件交互。
(2)面向对象(Object Oriented,简称OO)是一种以“事物/对象”为中心的编程思想。
思考:当然任务大致有几个?我们根据需求分析,知道当前需要完成两个数相加减运算任务
我们设计一个计算器对象,然后把两个任务封装成方法。然后,我们在主程序中,
通过对象去完成这个运算的任务。
好处:我们把需要的任务,单独指派特定的对象,可以由更专业的人去完成,我们可以不用关心
这个对象怎么实现的,我们只管使用!(封装)
对象的设计者,可以更集中的研究对象内部的实现,对象的调用者,只关心对象的使用。
而不用关心对象的设计。(高内聚、低耦合)
对于项目后续的更新、维护,基于对象设计程序,会变得非常简单和方便。
面向对象的学习需要挺长的一个过程,大家可以慢慢体会。
适用:各种规模的企业应用管理系统。
【展示面向过程和面向对象的VS图解】
2.8 面向对象编程应该如何学习
1.面向对象三大特性
(1)封装:隐藏内部实现细节,模块开发者之关心内部实现,模块调用者,只关心接口适用。
好处:安全性保障。(避免代码外漏)、快速应用、团队协作。
应用:类是程序的基本单元。代码被封装到类里面,一个类是一个单元,是一个封装,方法也是一定程度的封装,模块又是对类的封装。系统也在某些时候也是封装的体现。
(2)继承:复用技术。
好处:一处更新,处处使用。弊端:关联会越来越复杂。
我们自己的编写的代码,一般使用继承关系的并不多。
(3)多态
概念:让一个对象的接口可以根据不同的请求,做出不同的响应。
应用:继承多态、接口多态。
2.开发者必须要掌握OOP的各种原则
(1)单一职责(对象职责明确原则)
要求:一个对象只能做好一件事情,必须专注,职责过多,会引起代码混乱,维护麻烦。
如果一个类封装方法或属性的时候,比较多,就要考虑这些方法属性是不是属于这个对象。
(2)开放封闭原则(开闭原则)
要求:需求变化时,尽量减少类的修改,而是通过扩展来完成。封闭修改,开放扩展。
(3)依赖倒置原则、接口隔离原则、里氏替换原则。
总结:学好面向对象编程,就是要掌握面向对象编程的各种原则,方法等指导我们如何写程序。