Dot NET复习.docx
- 文档编号:8370717
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:30
- 大小:32.49KB
Dot NET复习.docx
《Dot NET复习.docx》由会员分享,可在线阅读,更多相关《Dot NET复习.docx(30页珍藏版)》请在冰豆网上搜索。
DotNET复习复习1C#语言介绍语言介绍1.用C#编写的源代码被编译为中间语言(为程序集),程序集将加载到CLR中,CLR执行实时编译将IL代码转换为本机机器指令并执行。
2.C#程序由一个或多个源文件(.cs文件)组成。
程序中声明类型,包含类、结构、接口、枚举和委托等类型。
类包含成员,例如字段、方法、属性和事件等。
在编译C#程序时,它们被物理地打包为程序集(.exe或.dll文件)。
3.C#引入了命名空间的概念,可以有效地组织.NETFramework类库包含大量的类型以及用户定义的自定义类型,从而最大限度地避免类型重名错误。
4.命名空间是一种逻辑组合。
C#程序中类型由指示逻辑层次结构的完全限定名(fullyqualifiedname)描述。
例如,CSharpBook.Chapter01.HelloWorld表示CSharpBook命名空间的子命名空间Chapter01中的HelloWorld类5.命名空间声明格式:
namespace命名空间名称;6.一个源程序文件中可以包含多个命名空间;同一命名空间可以在多个源程序文件中定义。
命名空间可以嵌套。
同一命名空间中不允许定义重名的类型7.访问命名空间:
.类型8.C#的可执行程序必须包含一个Main方法,用于控制程序的开始和结束。
Main方法是驻留在类或结构内的静态方法,在Main方法中可以创建对象和执行其他方法。
9.Main方法的参数是表示命令行参数的String数组。
通常通过测试args.Length属性来检查参数是否存在,args0表示第一个参数,args1表示第二个参数,以此类推。
10.C#使用传统的C风格注释方式:
单行注释使用“/”,多行注释使用“/*/”。
【例】“Hello,world”程序。
usingSystem;namespaceCSharpBook.Chapter01classHelloWorldstaticvoidMain()Console.WriteLine(HelloWorld!
);原理:
程序的基本构成2数据类型、变量和常量数据类型、变量和常量1.在.NETFramework中,引入通用类型系统(CTS),为语言间互操作性提供基本类型框架。
2.值类型的变量在堆栈中直接包含其数据,每个变量都有自己的数据副本,适合于存储少量数据类型,可以实现高效率处理。
C#的值类型分为简单类型、枚举类型、结构类型和可以为null的类型。
3.引用类型的变量在堆栈中存储对数据(对象)的引用(地址),数据(对象)存储在托管运行环境管理的堆(Heap)中。
两个引用类型变量可能引用同一个对象。
C#的引用类型分为类类型、接口类型、数组类型和委托类型。
4.通过装箱(boxing)和拆箱(unboxing)机制,可以实现值类型和引用类型之间的转换。
5.变量名的第一个字符必须是字母、下划线(_)或,其后的字符可以是字母、下划线或数字。
注意,C#定义的关键字不能用作变量名,但可以定义加关键字的变量名。
6.通过声明可以定义一个变量,通过复制可以初始化变量,C#变量被访问之前必须被初始化,否则编译时会报错。
7.C#变量分为7种类型:
静态变量、实例变量、数组元素、值参数、引用参数、输出参数和局部变量。
8.变量的作用于是可以访问该变量的代码区域。
在大型程序的不同部分常常使用相同的变量名定义不同的变量,只要保证变量的作用域属于程序的不同部分,就不会产生二义性,即不会发生冲突。
9.在声明和初始化变量时,在变量的前面加上关键字const,就可以把该变量制定为一个常量。
常量必须在声明时初始化;制定了其值后,不能再对其惊醒复制修改。
变量的命名规则一般采用大写字母。
10.C#支持8个预定义整数类型(sbyte、short、int、long、byte、ushort、uint、ulong),分别支持8位、16位、32位和64位整数值的有符号和无符号的形式。
11.C#支持梁总浮点数据类型(float、double),用于包含小数的计算。
12.C#支持decimal数据类型,支持较大的精确度,一般用于财务计算。
13.C#的bool数据类型用于逻辑运算,包含bool值ture或false。
14.C#的char数据类型用于保存单个16位的(Unicode)字符。
15.object类型是C#编程语言的类层次结构的跟类型,object是System.Object的别名。
16.C#字符串处理使用string(System.String的别名)类型表示0或更多Unicode字符组成的序列。
17.可以为null的类型表示可被赋值位null值的值类型变量,其取值范围位其基础值类型正常范围内的值再加上一个null值。
18.隐式转换允许在从小的值范围的类型到大的值范围的类型的转换,转换后的数值大小不受影响。
19.显式强制转换调用转换运算符,从一种类型转换位另一种类型。
如果未定义相应的转换运算符,则强制转换会失败。
20.Convert类提供了字符串和其他数据类型的相互转换方法。
【例】usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceccclassAApublicvoidaaa(intj)j=j*20;publicvoidbbb(refintj)j=j*40;classProgramstaticvoidMain(stringargs)AAa=newAA();inttest=5;a.aaa(test);/值类型Console.WriteLine(test);a.bbb(reftest);/引用类型Console.WriteLine(test);Console.Read();原理:
值类型与引用类型的区别3语句、运算符和表达式语句、运算符和表达式1.语句是C#程序的过程构造块,用于声明变量和常量,创建对象,变量赋值,调用方法,控制分支,创建循环等。
2.表达式(expression)是可以计算的代码片段,其计算结果一般为单个值,对象以及类型成员。
表达式由运算符(operator)和操作数(operand)构成。
3.运算符用于在表达式中对一个或多个称为操作数的进行计算并返回结果值。
接受一个操作数的运算符被称作一元运算符,例如增量运算符(+)或new;接受两个操作数的运算符被称作二元运算符,例如算术运算符+,-,*,/;接受三个操作数的运算符被称作三元运算符,条件运算符“?
:
”是C#中唯一的三元运算符。
4.算术运算符用于执行算术运算,包括+,-,+,-,*,/,%,+和-。
5.关系和类型测试运算符是二元运算符,用于比较两个操作数。
如关系成立,则结果为True,否则为False。
关系和类型测试运算符包括=,!
=,=,,=,is和as。
6.逻辑运算符用于将操作数进行逻辑运算,结果为True或False。
运算包括!
、&、|、&和|。
7.复制运算符将右操作数的值存储在左操作数表示的存储位置、属性或索引器中,并将值作为运算结果返回。
赋值运算分为简单赋值语句(=)和复合赋值语句(+=、-=、*=、=、%=、=、&=、|=、=)。
8.字符串运算符(+)用于串联(拼接)两个字符串。
9.位运算符用于按二进制位进行逻辑运算。
位运算符包括、&、和|。
10.条件运算符c#中唯一的三元运算符,右符号“?
”和“:
”组成,用于更简洁、直观的表达某些ifelse结构的计算。
11.Sizeof用于获取值类型的字节大小,仅适用于值类型,而不用于引用类型,sizeof运算符只能在不安全代码块中使用。
12.Typeof用于获取类型的System.Type对象。
若要获取表达式的运算时类型,可以使用.NETFramework方法GetType().13.表达式中的运算符按照运算符优先级(precedence)的特定顺序和结核性规则计算。
4程序流程和异常处理程序流程和异常处理01.顺序结构按各语句出现位置的先后次序执行,是C#程序中语句执行的基本顺序。
2.循环结构通过使用迭代语句创建循环,循环嵌入语句根据循环终止条件多次执行.C#提供了4种不同的循环机制:
for,while,dowhile,foreach.。
3.跳转语句用于无条件的转移控制。
使用跳转语句执行分支,该语句导致立即传递程序控制.C#跳转语句包括goto.break.continue.return.throw.。
4.C#种异常用于处理系统级和应用程序级的错误状态,例如零除异常,下标越界和I/o错误等.通过使用try.catchfinally语句来定义代码块,实现尝试可能未成功的操作,处理失败,以及在事后清理资源等.。
5数组与指针数组与指针1.数组(array)是一种数据结构,它包含相同类型的一组数据。
数组可以是一维数组、多维数组或交错数组。
2.数组在使用类型声明,数组元素可以为任何数据类型,包括数组类型。
3.数组在声明后必须实例化才能使用。
数组实例在运行时使用new运算符动态创建。
new运算符指定新数组实例的长度。
数值数组元素的默认值设置为0,而引用元素的默认值设置为null。
4.数组通过数组下标(或称索引)来访问数组中的数据元素。
数组下标(索引)从0开始:
具有n个元素(即维度长度为n)的数组的下标是从0到n-1。
5.交错数组是元素为数组的数组,所以有时又称为“数组的数组”。
交错数组元素的维度和大小可以不同。
交错数组同样需要声明,实例化并且初始化后才能使用。
6.System.Array类提供了许多实用的方法和属性,可用于数组的复制,排列等操作处理。
【例1】usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespacebbclassProgramstaticvoidMain(stringargs)intMaxScore=0;intMinScore=100;intAveScore=0;Randomr=newRandom();intarr=newint100;for(inti=0;iMaxScore)MaxScore=arri;if(arriMinScore)MinScore=arri;Console.Write(0,5,arri);AveScore/=100;Console.WriteLine(n100个学生的最高成绩0、最低成绩1、平均成绩2,MaxScore,MinScore,AveScore);Console.Read();【例2】usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespacebbclassProgramstaticvoidMain(stringargs)intmyArr=newint2newint8,6,3,2,newint7,2,7;for(inti=0;imyArr.Length;i+)for(intj=0;j,=,二元十,二元一,&,|,+,-以及sizeof。
10.所有的枚举默认都继承于System.Enum,Enum类提供若干静态方法,可以用于枚举的基本操作。
11泛型泛型1.在概念上,泛型类似于C+模板。
通过泛型可以定义类型安全的数据结构,而无需使用时机的数据类型。
泛型类和反省方法具备可重用性、类型安全和效率。
2.在C+中,可以定义泛型接口、泛型类、泛型方法、泛型事件、和反省委托。
反省定义是通过反省参数()来进行定义的。
3.类型参数实际上不是特定类型,而只是类型占位符。
常见未绑定的类型参数的泛型类的实例时,可以违反姓雷的形参制定任何类型。
如果需要限定该泛型类形参仅支持默写特定类型,则可以使用上下文关键字where丁一凡性参数的约束。
4.泛型类一般用于封装非特定数据类型的操作。
列如,集合(如链接列表、哈希表、堆栈、队列和树等)的添加项/移出项等操作的执行方式大体相同,与所存储数据的类型无关。
5.在泛型类的设计中,通常也把泛型类共同要实现的方法、委托或时间的签名封装为泛型接口,然后在实现这些泛型类接口的泛型类中实现这些方法等。
6.泛型方法是使用类型参数表明的方法。
7.通过泛型类型参数,同样可以定义泛型委托。
基于泛型委托,可以定义泛型事件。
14多线程编程技术多线程编程技术1.进程是操作系统中正在执行的不同应用程序的一个实例,操作系统把不同的进程分离开来。
2.在.NETFramework运行环境中,操作系统进程可进一步细分为一个或多个应用程序域。
每个应用程序域可以运行一个或多个托管线程。
3.线程处理使程序能够执行并发处理,因而特别适合需要同时执行多个操作的场合。
然而,多个线程控制代码导致程序执行的复杂性。
4.C#应用程序运行时,将创建新的应用程序域。
当运行环境调用应用程序的入口点(Main方法)时,将创建应用程序主线程。
主线程代码可以创建多个工作线程。
5.System.Threading命名空间提供支持多线程编程的类和接口,用于执行诸如创建和启动新线程、同步多个线程、挂起线程以及中止线程等任务。
6.调用Thread.Sleep方法会导致当前线程立即阻止;调用Thread.Interrupt可以中断正在等待的线程并引发ThreadInterruptedException。
7.通过线程的Priority属性可以获取和设置其优先级。
8.线程的生命周期中包括各种状态,各状态之间可以相互转换。
9.使用同步处理,可以避免一个线程中断另一个线程正在执行的某些关键任务。
同步处理:
使用lock语句同步代码块或者使用监视器(Monitor)同步代码块10.线程池是可以用来在后台执行多个任务的线程集合,这使主线程可以自由的异步执行其他任务。
一般可使用ThreadPool类创建线程池【例】usingSystem;usingSystem.Threading;/引用System.Threading命名空间namespaceAExe3classThreadTeststaticvoidMain()/主线程Threadt=newThread(WriteY);/创建工作线程t,t指向WriteY()函数t.Start();/启动线程for(inti=1;i=100;i+)Console.WriteLine(i);Console.Read();staticvoidWriteY()for(chari=a;i=z;i+)Console.WriteLine(i);原理:
线程的创建15数值、日期和字符串处理数值、日期和字符串处理1.System.Math类为三角函数,对数函数和其他通用数学函数提供常数和静态方法。
2.Random类提供了产生伪随机函数的方法。
3.C#中一般使用System.DateTime来表示和处理日期。
4.使用System.String可以动态构造自定义字符串,执行许多基本字符串操作。
5.StringBuilder类表示值为可变字符序列的类似字符串的对象,6.即可通过追加,移除,替换或插入字符而创建它后可以对它进行修改。
7.使用Ststem.Text命名空间中对字符进行编码和解码的类。
16文件和流文件和流I/O1.文件可以看作是数据的集合,一般保存在磁盘或其他存储介质上。
2.文件I/O(数据的输入输出)通过流(Stream)来实现;流提供一种向后备存储写入字节和从后备存储读取字节的方式。
后备存储包括各种存储媒介,如磁盘、磁带、内存和网络等,对应于文件流、磁带流、内存流和网络流等。
对于有5种基本的操作:
打开读取、写入、改变当前位置和关闭。
3.NETFramework的System.IO命名空间包含了用于文件和流操作的各种类型。
4.使用DriverInfo类可以确定可用的驱动器及其类型;确定驱动器的容量和可用空闲空间等。
5.Directory类和DirectoryInfo类提供用于目录基本操作的方法,包括创建、复制、移动、重名和删除目录;获取和设置目录的创建、访问及写入的时间戳信息等。
6.File类和FileInfo类提供用于文件基本操作的方法,包括创建、复制、移动、重名和删除文件;打开文件,读取文件内容和追加内容到文件;获取和设置文件的创建、访问及写入的时间戳信息等。
7.StreamReader类和StreamWriter类分别以一种特定的编码从字节流中读取字节和向流中写入字符。
8.StringReader类和StringWriter类分别实现字符串的读数和写入操作。
17集合和数据结构集合和数据结构1.NETFramework包含若干用于实现集合的接口和类,将紧密相关的数据组合到一个集合中,并提供有效的地处理这些紧密相关的数据的各种算法、2.ArrayList用于构建复杂的数组或列表集合,其容量可根据需要自动扩充。
ArrayList提供添加、插入或移除某一范围元素的方法。
3.List类是对应于ArrayList的泛型类。
该类使用大小可按需动态增加的数组实现Ilist泛型接口。
4.常用的集合有:
Hashtable,SortedList,SortedList,Dictionaryt,SortedDictionary,Queue,Stack,HashSet,BitArray,BitVector32,NameValueCollection,StringDictionary,StringCollection,【例】:
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Collections;namespaceccclassProgramstaticvoidMain(stringargs)ArrayListmyAL=newArrayList();for(inti=0;i8;i+)myAL.Add(i*3+2);PrintValues(myAL,);myAL.Remove(5);myAL.RemoveAt(3);PrintValues(myAL,);myAL.Insert(2,4);PrintValues(myAL,);ArrayListmySubAL=myAL.GetRange(2,4);PrintValues(mySubAL,);Console.Read();publicstaticvoidPrintValues(IEnumerablemyList,charmySeparator)foreach(ObjectobjinmyList)Console.Write(01,mySeparator,obj);Console.WriteLine();原理:
ArrayList集合及其添加、插入或移除某一范围元素的方法。
19Windows窗体应用程序窗体应用程序1.Windows窗体应用程序是运行在用户计算机本地的基于Windows的应用程序,提供丰富的用户界面以实现用户交互,并可以访问操作系统服务和用户计算环境提供的资源。
2.使用.NETFrameworkSDK提供的工具表,可以从命令行开发和调试Windows窗体应用程序。
3.通过集成开发环境VisualStudio,可以快速,高效地开发和调试Windows窗体应用程序。
4.“窗体”是向用户显示信息的可视图画,窗体包括可添加到窗体上的各式控件5.“控件”是显示数据或接收数据输入的相对的用户界面元素,如标签、文本框、按钮、单选按钮、复选框、分组框、列表框、复选列表框、图片框、图像列表和定时器等。
6.通过“属性”窗口,可以设置各控件的属性;例如,设置所有空间的字体可以用窗体属性Font来设置;通过编写各控件的事件处理程序,可以实现各种逻辑功能。
7.NETFramework包含大量的常用Windows窗体控件,控件是包含在窗体对象内的对象。
每种类型的控件都具有自己的属性集、方法和事件。
通过这些控件,可以构造各种复杂的桌面应用程序。
【综合】:
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceConsoleApplication1classProgramstaticvoidMain(stringArgs)Programp=newProgram();/1)生成2个集合随机设置其中10个数,并输出。
IntegerSetfirst=newIntegerSet();p.set10Value(first);IntegerSetsecond=newIntegerSet();p.set10Value(second);p.PrintArrayValues(first);p.PrintArrayValues(second);/2)分别调用Union,Intersection并将这两个结果输出。
IntegerSetunionResult=first.Union(second);Console.WriteLine(UnionResult:
);p.PrintArrayValues(unionResult);IntegerSetintersectionResult=first.Intersection(second);Console.WriteLine(IntersectionResult:
);p.PrintArrayValues(intersectionResult);/3)向第一个数组中插入一个不存在的数字,再删除数组中存在的第一个数,并输出结果。
/获取first对象中数组的长度for(inti=0;ifirst.arrayInt.Length;i+)if(first.arrayInti=false)first.arrayInti=true;break;p.PrintArrayValues(first);for(inti=0;ifirst.arrayInt.Length;i+)if(first.arrayInti=true)first.arrayInti=false;break;p.PrintArrayValues(first);/4)判断随机产生的两个数组是否相等。
Console.WriteLine(判断随机产生的两个数组是否相等+first.IsEqualTo(second);Console.Read();/随机设置数组中10个数publicvoidset10Value(IntegerSettemp)/声明并初始化一个Hash集合HashSetset=newHashSet();for(inti=0;i10;)Randomrandom=newRandom();intranVale=random.Next(0,101);if(set.Contains(ranVale)=false)set.Add(ranVale);temp.InsertElement(ranVale);i+;publicvoidPrintArrayValues(IntegerSettemp)for(inti=0;itemp.arrayInt.Length;i+)if(temp.arrayInti=true)Console.Write(0t,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Dot NET复习 NET 复习