.NET复习笔记

.NET 基础知识点汇总

课前知识储备。

一、C#与.NET的区别?

1..NET/dotnet:一般指.Net Framework框架,一种平台,一种技术

2.C#(sharp):一种编程语言,可以开发基于.net平台的应用

3.(*)JAVA即是一种技术也是一种语言

对于.NET与.net Framework我们可以这样用这样的例子来进行说明

例如    .NET---------》相当于中国移动提供的移动互联网平台

.NET Framework 平台----------》相当于中国移动在全世界各地建造的信号塔

基于.net 平台开发的软件相当于手机中的各种功能;要想正常运行开发软件的话,就离不开.net平台;如果.net平台要正常运行的话,就离不开.net framework 框架提供的稳定环境。

二、.NET的发展史

2002年6月22日 Microsoft公司正式发布.net 平台。李开复

三、.NET可以干什么?

1)桌面应用程序  也叫做winform应用程序。

2)Internet应用程序   使用.net 开发的internet应用程序叫 ASP.NET应用程序

3)手机开发  在2011年Microsoft推出了wp7 发展时间不长就淘汰   Unity3D (开发手机游戏)是一种应用在手机中不错的技术。

四、.NET的两种交互模式

C/S  即 Client/Server  客户机/服务器模式  要求:要求用户的电脑上必须要安装一个客户端  如:qq  360

B/S  即 Browser/Server  浏览器/服务器模式 要求:  要求用户只需要安装一个浏览器即可。

五、IDE介绍

1.IDE(Integrated Development,集成开发环境)

2.Visual Studio 简介:

一套完整的开发工具集用于开发桌面的应用程序、ASP.NET WEB一用程序、XML、Web Service、移动应用程序为快速开发提供强大支持

六、启动visual studio的方法

windows+r打开运行命令框写入 devenv命令

如果卡死 找到进程 结束devenv这个进程

七、MSDN介绍

MSDN 的全称是 Microsoft Developer Network。这是微软公司面向软件开发者的一种信息服务。MSDN 实际上是一个以 Visual Studio 和 Windows 平台为核心整合的开发虚拟社区,包括技术文档、在线电子教程、网络虚拟实验室、微软产品下载(几乎全部的操作系统、服务器程序、应用程序和开发程序的正式版和测试版,还包括各种驱动程序开发包和软件开发包)、Blog、BBS、MSDN WebCast、与 CMP 合作的 MSDN 杂志等等一系列服务。

八、文件扩展名

在保存文件的时候尽量保存到自己指定的文件目录下 如果找不到保存的路径时可以通过(右击“解决方案 ”在弹出的快捷菜单中选择“在windows资源管理器中打开文件夹”)打开项目的文件夹。

在打开的项目中有一个*.sln代表是解决方案文件的,在这个文件中包含了解决方案中的信息,这个是可以直接双击运行的。

.csproj: 是 C Shape Project的缩写 里面包含了项目的信息,不可以直接双击运行。

C#源文件(类)一般以cs结尾即类的扩展名是*.cs

C#程序的入口是Main函数,在Main中写代码就行.

八、注意点

1.在c#当中,是严格区分大小写的  Console.WriteLine();

2.在vs当中,所有的标点符号,都应该是英文半角状态下的标点符号,绝对不能出现全角或者中文。

3.解决方案中可以包含多个项目,项目可以包含多个文件,文件中是我们写的程序。

4.在文件中,命名空间中可以包含类,类中可以包含方法,方法中可以是我们写的程序。

5. 一般窗口不小心关闭了,在视图中寻找。

6. 重置开发环境,可以是我们的开发环境还原为默认状态。工具-导入和导出设置-重置所有设置-否,仅重置所有设置。

7. Main方法是我们程序的入口方法,当我们执行一个程序时,会首先找到一个Main方法,从Main的第一句程序开始执行,当Main方法执行完成后(即执行到Main方法的反大括号就结束了)。

8、初学者学习写程序的时候,必须要写下Main()方法中。

9、设置启动项  右键点击解决方案  选中属性----》当前选定内容

10、在C#中,每一句话都必须以“分号”结束

11、工具-选项-字体和颜色

12、工具-选项-文本编辑器-行号(勾选)

13、解决方案-新建项目(在当前解决方案下新建项目)

14、Console.WriteLine("你想显示的内容");

15、Console.ReadKey(); 当程序执行到这里的时候,等待用户从键盘上键入后,程序才继续执行

基础知识点回顾

一、C#中的注释

1、什么是注释?  注销和解释写的代码

2、注释的方式?

单行注释  注销或者解释单行代码  //

多行注释  注销你写的多行代码   /*要注释的内容*/

文档注释  解释你的类或者方法写的神马意思    ///

二、vs中常用的快捷键

1.Home 无论光标在哪,按下后跳转到该行最前面

2.End 无论光标在哪,按下后跳转到该行最后面

3.Page up 上翻一页

4.Page down 下翻一页

5.Shift 选中多个字符

6.Ctrl+Home 整个文档最前面

7.Ctrl+End 整个文档最后面

8.Delete 删除光标后面的

9.Backspace 删除光标前面的

10.Insert 覆盖字符

11.over 插入字符

12.Ctrl Z/X/C/V 撤销/剪贴/复制/粘贴

12.F5调试程序

13.F6生成程序

14.  #Region和#Endregion 折叠语段

三、.Net Framework框架组成

1.FCL  类库

2.CLR 公共语言运行时   Common language runtime

当咱们点击F5运行程序的时候,CLR首先加载所有的类到内存中,然后找到其中的主函数(Main函数),从上到下一行一行的执行,

如果你的代码当中没有主函数,则程序不会运行,会报错,如果你的代码中有两个或两个以上主函数,程序也会报错。

主函数只能由一个。

MSIL:微软中间语言Microsoft Intermediate Language

CLR:公共语言运行时Common Language Runtime

CLS: 公共语言规范Common Language Specification

CTS:通用类型系统Common Type System

JIT:即时编译器 Just In Time

四、面试题

CTS、CLS、CLR分别作何解释(*)把英文全称背过来。

C#和.Net的关系。

C#只是抽象的语言,可以把C#编译生成Java平台的二进制代码,也可以把Java代码编译生成.Net平台的二进制代码。所以C#只是提供了if、while、+-*/、定义类、int、string等基础的语法,而Convert.ToInt32、FileStream、SqlConnection、String.Split等都属于.Net的东西。深蓝色是C#的,浅蓝色是.Net的。

C# new→IL:newobj

C# string →.Net中的String

类型的差别:.net中的Int32在C#中是int,在VB.Net中是Integer。

语法的差别:IL中创建一个对象的方法是L_0001: newobj instance void 索引.C1::.ctor()

C#中是new C1();VB.net中是 Dim c1 As New C1

CTS:Common Type System 通用类型系统。Int32、Int16→int、String→string、Boolean→bool。每种语言都定义了自己的类型,.Net通过CTS提供了公共的类型,然后翻译生成对应的.Net类型。

CLS:Common Language Specification 通用语言规范。不同语言语法的不同。每种语言都有自己的语法,.Net通过CLS提供了公共的语法,然后不同语言翻译生成对应的.Net语法。

CLR:Common Language Runtime 公共语言运行时,就是GC、JIT等这些。有不同的CLR,比如服务器CLR、Linux CLR(Mono)、Silverlight CLR。相当于一个发动机

五、变量

用户存储正在运行的程序数据(不准备)

RAM:内存有个特点,断电后里面的数据丢失。

变量:变量代表着一块内存空间,我们可以通过变量名称向内存存/取数据,有变量就不需要我们记忆复杂的内存地数据类型。

1.变量的作用?

变量是用来存储数据,存储的对象不同,所占的存储空间也不同。

2.变量的声明?

A)数据类型   变量名称;     int  age;

变量的赋值    age=18;

B)定义时赋值,数据类型    变量名称=值;

int age = 18;

C)如果一次要声明多个相同类型的变量可用逗号分隔.

string  zsName,lsName;

变量一定要遵循“先声明,后使用”原则。

3. 变量的特点

A) 不能被重复声明     B) 可以重复的赋值

4. 变量的命名规则

A)必须以字母、美元符号($)或者下划线_开头.

B)后面可以任意“字母”、数字、下划线.

注意: A) 声明的变量名不能和系统关键字重复;

B) 区分大小写;

C) 同一个变量只能定义一次;

D) 变量明的定义尽量做到见名知义;

什么叫做关键字?凡是你写出来之后 发现它变成蓝色的,都是关键字 关键字就是这个单词 vs已经用了,你就不能再用了

5.变量的命名规范

Camel命名法:首个单词的首字母小写,其余单词的首字母大写。totalCycle

适用于本地变量和方法参数

Pascal命名命名规范:A)每一个单词第一字母都大写; CarDesk

B)如果使用到英文单词的缩写,全部用大写! IO

适用于 类型名和成员名

6. 常见的数据类型

int: (整数)               1,250,520

double: (小数)        3.1415926,1.4142135623731

char : (字符)           ‘A’   ‘b’   ‘a’  ‘钱 '

string : (字符串)        “老赵” ,“HelloWorld”   "a"

decimal:(金钱小数)存储金钱   5.62m

注意: A)char 最多能存储一个字符,最少也能存储一个字符;

B) double和decimal都是小数,但是精度不同;

C)decimal是128位(28位精度)的数据类型,适合于财务计算和货币计算。

D)在C#开发环境中,直接写一个有小数点的数字,这个数字是double类型的。

在一个小数后面加一个m/M,就告诉编译器这个数字是decimal。

7. 赋值运算符和复制表达式

赋值运算符     =

=不是等号的意思,它表示把等号右边的值,赋值给等号左边的变量。A=90;

赋值表达式

有等号=连接的表达式就是赋值表达式;

注意:每个表达式都可以求解出一个值来,对于赋值表达式,我们就认为,等号左边的变量的值就是整个赋值表达式的值。 a=a+10;

变量可以重复赋值,一旦给一个变量赋了新值,那么变量中的老值就不复存在了.

在方法中定义变量,要使用Camel命名法,Main方法也是。

在一个方法中,一般情况下变量只能定义一次,但可以多次赋值,再次赋值时会把变量中原有的值覆盖掉。

8. +”在C#中的两重意义

A).是数学中的加法运算:两边参与加法运算的数据类型为数字类型,则“+”表示数学上的加法的意义

B).是连接意义:两边参与加号运算的数据,有一个是字符类型,那么这个“+”就是连接意义

string a = "1";

int b = 2;

Console.WriteLine(a+b);

输出的值为12

9. 占位符(先挖个坑,在填个坑;)

A) 占位符一定是从0开始,依次递增,不能跳跃;

B) 多填坑不会出现结果,少挖坑会出现异常;

C) 输出的顺序是按照挖坑的顺序输出

在Conslole.Writeline("")中,第一个变量/字符串中可以使用占位符

eg: 我叫小辉,今年21岁了,我的工资是6000元

string name=”小辉”;

int age=21;

decimal money=6000m;

//Console.WriteLine("我叫" + name+ ",今年" + age+ "岁了,我的工资是"+money+"元");

Console.WriteLine("我叫{0},今年{1}岁了,我的工资是{2}元",name, age, money);

Console.Wroteline();有多个参数时,输出都是第一个参数中的内容,从第二个参数开始,都是用来替换第一个参数中的占位符的值,所以从第二个参数开始,要不要输出,就看第一个参数中有没有想过的占位符。

10. 变量的交换

A) 借助第三方变量

int a = 10, b = 5;

int temp;

temp = a;

a = b;

b = temp;

Console.WriteLine("a={0},b={1}", a, b);

Console.ReadKey();

B) 不使用第三方变量

int a = 10, b = 5;

a =a - b;

b = a + b;

a = b - a;

Console.WriteLine("a={0},b={1}", a, b);

Console.ReadKey();

int a = 10, b = 5;

a =a + b;

b = a- b;

a = a-b;

Console.WriteLine("a={0},b={1}", a, b);

`            Console.ReadKey();

11. 异常不报错

报错:语法出现了问题,程序根本不会运行

异常:语法没有问题,但是在程序运行的过程当中出现了错误。就是咱们俗称的bug

12. 转义字符

当我们需要在字符串中输入一些特殊字符时,比如:半角引号,换行,退格,就需要使用转义字符。

转义符就是在”\”后面加上一个特殊的字符,组成一个有意义的字符;

\" 表示为一个"

\b 表示退格  放在字符串的两端 没有效果

\n 表示换行

\t 对其 tab键

\\ 表示为\

@符号

1)、取消\在字符串中的转义作用,使它单纯的表示为\

2)、将字符串原样输出,用在路径比较多

13.算术运算符及算数表达式

算术运算符: + — * / % (去余数 取模)

算数表达式:由算数运算符连接起来的式子。如:1+1  a-b  (变量ab前面已经声明并赋初值)

优先级:先乘除,后加减,有括号先算括号里面的,相同级别从左至右运算

小括号可以无限制的套用,但一定要成对出现。

int chinese = 90;

int math = 80;

int english = 91;

int sun = chinese + math + english;

int avg = sun / 3;

Console.WriteLine("您的总成绩是{0},平局成绩是{1}", sun, avg);

c#中,有五个算数运算符: + — * / %   他们都是二元运算符。

//double pi = 3.14;

//int r = 5;

//double s = r * r * 3.14;

//Console.WriteLine("s={0}",s);

要求:参与运算的两个操作数的类型必须相同,并且经过运算后的结果也与操作数的类型相同。

double tshirPrice = 35;

double trouserPrice = 120;

double totalMoney = 3 * tshirPrice + 2 * trouserPrice;

double disMoney = totalMoney * 0.88;

Console.WriteLine("购物总计:{0},打8.8折后应付:{1}元", totalMoney, disMoney);

14.数据类型的转换

数据类型的转换分为两种,隐式转换和强制转换

在算术表达式中  参与运算的操作数的类型必须一致,也必须和结果的类型一致。如果不一致的话,满足下列条件,会自动发生转换。

1)、类型必须相兼容  都是数字

2)、小的转大的

如果出现大的数据类型转换成小的数据类型是,则要使用强制转换类型

语法格式如下:     (待转换的类型)要转换的值;

int result=(int)303.6;

发生强制类型转换结果会丢失精度;

对于不兼容的类型的转换,使用Convent转换。

eg:                 string str = "123";

double b = Convert.ToDouble(str);

int c = Convert.ToInt32(str);

Console.ReadKey();

当不一致时,满足下面系统自动完条件时,成类型转换       (隐式转换)

两种类型兼容

例如:int 和 double 兼容(都是数字类型)

目标类型大于源类型

例如:double > int

强制转换

对于表达式

如果一个操作数为double型,则整个表达式可提升为double型

Convert不再仅是内存级别的转换,而是考虑数据意义的转换。Convert是一个加工、改造的过程

通过 Convert.ToInt32(能转换成int类型的数据)来把其他类型数据转换成int类型

一切类型都可以转换为string类型

15. 异常捕获

try

{

有可能出现的错误的代码卸载这里

catch

{

出错后的处理

}

上面的程序如何执行“

如果try中的代码没有出错,则程序正常运行try中的内容后,不会执行catch中的内容

如果try中的代码一旦出错,程序立即跳入catch中去执行代码,那么ray中的出错代码后面的内容

练习题:

1、定义一个变量存储客户的姓名,然后在屏幕上显示:”你好,某某”.

答案:     string name = "王五";

Console.WriteLine("你好" + name);

2、有个叫卡卡西的人在旅店登记的时候前台让他填一张表,这张表的里的内容要存到电脑上,有姓名、年龄、邮箱、家庭住址,工资.之后把这些信息显示出来

答案:     string name = "卡卡西";

int age = 20;

string email = "kakaxi@qq.com";

string address = "火影村";

decimal salary = 5000m;

Console.WriteLine("我的名字叫" + name + ",我的年龄是" + age + ",我的邮箱是" + email + ",我的地址是" + address + ",我的工资是" + salary);

Console.ReadKey();

3、定义一个变量存储一个人的年龄(18),然后发现这个人的年龄不是18岁,要把这个人的年龄修改成20岁(本题体会变量可以被重复多次赋值),最后把这个人的年龄输出到屏幕上?

答案        int age = 18;

age = 20;

Console.WriteLine(" 都" + age + "岁了");

Console.ReadKey();

4、定义四个变量,分别存储一个人的姓名、性别(Gender)、年龄、电话(TelephoneNumber)。然后打印在屏幕上 (我叫X,我今年 X岁了,我是X生,我的电话是XX)(电话号用什么类型,如:010-12345)

答案:      string name = "张三";

char gender = '男';

int age = 20;

string tel = "123456789123";

Console.WriteLine("我叫{0},我几年{1}岁了,我是{2}生,我的电话是{3}", name, age, gender, tel);

Console.ReadKey();

5、在屏幕上显示我家在…今年..岁了,我的姓名是.. 请定义变量存储上面的值,并显示在屏幕上.

答案:      string address = " 河南省洛阳市";

int age = 20;

string name = "张旭辉";

Console.WriteLine("我的地址是{0},我的名字是{1},我的年龄是{2}", address, name, age);

Console.ReadKey();

6、定义两个变量如:number1,number2分别赋值为10和5,写程序交换两个变量的值(两种方法都掌握)

答案:

方法一:借助第三个变量

int a = 10, b = 5;

int temp;

temp = a;

a = b;

b = temp;

Console.WriteLine("a={0},b={1}", a, b);

Console.ReadKey();

方法二:不使用第三个变量

int a = 10, b = 5;

a =a - b;

b = a + b;

a = b - a;

Console.WriteLine("a={0},b={1}", a, b);

Console.ReadKey();

int a = 10, b = 5;

a =a + b;

b = a- b;

a = a-b;

Console.WriteLine("a={0},b={1}", a, b);

Console.ReadKey();

7、练习:问用户喜欢吃什么水果(fruits),假如用户输入”苹果”,则显示”哈哈,这么巧,我也喜欢吃苹果”

Console.WriteLine("美女,你喜欢吃啥子水果哟~~");

//Console.ReadLine()这行代码 会返回一个字符串类型的变量 返回的这个字符串就是用户在控制台中输入的内容

string input = Console.ReadLine();

Console.WriteLine("哈哈,这么巧呀,我也喜欢吃{0}", input);

Console.ReadKey();

8、练习:请用户输入姓名性别年龄,当用户按下某个键子后在屏幕上显示:您好:XX您的年龄是XX是个X生

Console.WriteLine("请输入你的姓名");

string name = Console.ReadLine();

Console.WriteLine("请输入你的性别");

string gender = Console.ReadLine();

Console.WriteLine("请输入你的年龄");

string age = Console.ReadLine();

Console.WriteLine("{0}您的年龄是{1},是个{2}生", name, age, gender);

Console.ReadKey();

9、定义两个数分别为100和20,打印出两个数的和。

int numberOne = 100;

int numberTwo = 20;

Console.WriteLine("这个两个数字的和是{0}", numberOne + numberTwo);

Console.ReadKey();

10、计算半径为5的圆的面积并打印出来.(pi为3.14)面积:pi*r*r; Perimeter(周长)

int r = 5;

double pi = 3.14;

double area = pi * r * r;

double perimeter = 2 * pi * r;

Console.WriteLine("半径为5的圆的面积是{0},周长是{1}", area, perimeter);

Console.ReadKey();

11、练习3:某商店T恤(T-shirt)的价格为35元/件,裤子(trousers)的价格为120元/条.小明在该店买了3件T恤和2条裤子,请计算并显示小明应该付多少钱?

打8.8折后呢?

int t_shirt = 35;

int trousers = 120;

int sum = t_shirt * 3 + trousers * 2;

Console.WriteLine("总计花费{0}元", sum);

double dzhSum = sum * 0.88;

//303.6  将303.6 转成303

Console.WriteLine("打8.8折后的价格是{0}",dzhSum);

Console.ReadKey();

12、练习,编程实现计算几天(如46天)是几周零几 天.

练习,编程实现计算几天(如46天)是几周零几 天.改成提示用户输入天数

Console.WriteLine("请输入一个天数");

//  string strDays = Console.ReadLine();

int days = Convert.ToInt32(Console.ReadLine());

//  int days = 46;

int weeks = days / 7;//求得周数

int day = days % 7;

Console.WriteLine("46天是{0}周零{1}天", weeks, day);

Console.ReadKey();

Console.WriteLine("请您输入天数");

int num = Convert.ToInt32(Console.ReadLine());

Console.WriteLine("{0}周,{1}天?, num / 7, num % 7);

Console.ReadKey();

13、练习:编程实现107653秒是几天几小时几分钟几秒?

int seconds = 107653;

int days = seconds / (3600 * 24);

int mod = seconds % (3600 * 24);  //除去计算天数所用的秒,

int h = mod / (3600);

mod = mod % 3600;

int min = mod / 60;

int sec = mod % 60;

Console.WriteLine("{0}秒里包含{1}天{2}小时{3}分{4}秒", seconds, days, h, min, sec);

Console.ReadKey();

六、表达式

1. 算术运算符和复合赋值运算符

++  自加一     有前加和后加

--     自减一   有前减和后减

一元运算符++/--比二元的+-优先级高

+=   -=    *=   /=    %=

对于+-*/%=都需要两个操作数才能进行运算的这些运算符,我们叫做二元运算符;

对于像++ -- 这样的只需要一个操作数就能进行运算的运算符,我们叫做一元运算符.

2. 关系运算符(比较运算S)

>,<

==(等于,相等),!=(不等)

>=(大于等于,包含),<=(小于等于,包含)

结果为true或false     判断一个东西,如果是真的就是True,如果是假那就是Flase.

关系表达式:由关系运算符链接起来的式子

 

3. 布尔类型和布尔表达式

真:ture

假:false

关系表达式的运算结果为bool类型,bool类型只有两个值,一个是ture,一个是false。

如果关系运算表达式成立,则这个表达式的值为ture,否则为false

int zsage = 20;

int lsage = 18;

bool isRight = zsage < lsage;

Console.WriteLine(isRight)

4. 逻辑运算符和逻辑表达式

&&(逻辑与) ||(逻辑或)  !(逻辑非)

A) 逻辑与运算:&&

bool isRight = 表达式1 && 表达式2

逻辑与连接的两个表达式,要能够求解成bool类型,一般情况都是关系表达式

整个逻辑与运算的结束也是bool类型

表达式1       表达式2     逻辑与结果

ture           ture                ture

false           false                  false

false           ture              false

ture           false              false

当两个表达式全为ture时,结果才为ture

int age = 20;

int weight = 120;

bool result = age >= 18 && weight >= 100;

Console.WriteLine(result);

输出的结果为Ture

int age = 10;

int weight = 90;

bool result = age >= 18 && weight >= 100;

Console.WriteLine(result);

输出的结果为False

B)逻辑与运算:||

bool isRight = 表达式1 || 表达式2

逻辑与连接的两个表达式,要能够求解成bool类型,一般情况都是关系表达式

整个逻辑与运算的结束也是bool类型

表达式1       表达式2     逻辑与结果

ture           ture                     ture

false           false                  ture

false           ture              ture

ture           false             false

只要有一个为ture,其结果都为ture

//让用户输入张三的身高和体重

//火车站规定,一个人的身高>=120厘米或者体重>=50kg就必须买票

//需要买票输出ture,不需要输出false

Console.WriteLine("请输入您的身高(cm):");

int high = Convert.ToInt32(Console.ReadLine());

Console.WriteLine("请输入您的体重(kg):");

int weight = Convert.ToInt32(Console.ReadLine());

bool result = high >= 120 || weight >= 50;

Console.WriteLine(result);

C) 逻辑非:!

这是一个一元运算符.

用法:

!(布尔类型的表达式)

作用:

如果:

布尔类型的表达式的表达式为ture,加!号后,其整个式子的结果为false.

布尔类型的表达式的表达式为false,加!号后,其整个式子的结果为ture.

Console.WriteLine(!result);

输出结果想反,真变假,假变真

表达式           !表达式

True             False

False            Ture

七、选择语句

1. if 语句

if 结构的基本语法

if (条件)

语句1;

执行过程:

首先判断条件的结果,如果田间为Ture,则执行语句1.如果条件为False,则跳过语句1.执行后面的语句.

执行流程图:

注意:

1.if如果括号中的条件,要能计算成一个bool类型的值.

2.默认情况下,if语句只能带1句话.即和if语句有关系的语句只有1.

//if语句基本用法

int a = 3;

if (a > 10)                      //这里没有;号

Console.WriteLine("成立");       //if默认只带这一句话

Console.WriteLine("程序结束");   //这句话和if没关系

上一篇:开发Angular库的简单指导(译)


下一篇:myeclipse WIN7下设置字体列表中无Courier New