还剩5页未读,继续阅读
文本内容:
C#学习笔记
1.c#具有所有面向对象的语言的所有特性封装,继承,多态在C#系统中,所有的类型都可以看作一种对象C#只容许单继承,即一种类不会有多种基类,C#不会有全局函数,不会有全局变量,不会有全局常数,所有的一切只能封装在一种类中
2..net包括四个部分vos类型系统;元数据;公用语言规范;虚拟执行系统
3.using system表达导入名称空间
4.让我们从第一种程序开始就记得每个东西都必须属于一种类,类里面的措施总是为我们完毕某件工作的在C#中,程序的执行总是从main措施开始的,一种程序中不容许出现两个或两个以上的main措施对于习惯学C控制台程序的读者,必须要牢记main措施必须包括在一种类中
5.运用string可以以便地对字符串进行连接或剪切例string s=goocT+”morning;char x=s⑶字符串可以通过下标进行索引,得到一种字符
6.我们可以用〃进行单行标注,/**/进行多行标注
7.在C和C++中,任何非0值都表达真,在C#中,任何非0值都不能替代true,在其他类型的整型值和布尔值之间不存在任何的转换,将整型转换成布尔型是不合法的
8.把一系列有关的变量组织成单一实体的过程称为生成构造的过程这个单一实体的类型叫构造类型,每一种变量就是构造的组员
9.构造类型包括的组员类型可以相似,也可以不一样我们甚至可以把一种构造类型当作另一种构导致员的类型
10.枚举实际上是为一组在逻辑上密不可分的整数值提供便于记忆的符号构造类型变量的值由各个组员的值组合而成而枚举则不一样,枚举类型的变量在某一时刻只能取枚举中某个元素的值按照系统的设定,每个元素的类型都为整型且第一种元素的值为0,背面的每个元素梯加1,也可以直接赋值如把前面第一种元素的值设为1,背面的元素不用设,系统自动将背面元素的值递加LIL C#中另一大数据类型是引有类型其含义是该类型的变量不直接存储所包括的值,而是指向它所要存储的值也就是说引用类型存储实际数据引用值的地址
12.类是面向对象编程的基本单位,是一种包括数据组员,函数组员和嵌套类型的数据构造类和构造都包括了自己的组员,但它们的区别是类是引用类型,而构造是值类型
13.假如我们对某个类定义了一种变量,则我们就将它称为类的一种实例
14.我们常用到的类object类这个类是其他所有类的基类,其他类型可以直接或间接地从object类中继承因此,对一种object类的变量可以赋于任何类型的值
15.代表?在申明代表时,只需要指定代表指向的原型的类型,它不能有返回值,也不能带有输出类型的参数如delegate intMydelegate,在使用的时候Mydelegate d=newMydelegatep.instanceMethod.为何不用delegate d=new Mydelegatep.instanceMethod呢?原因是delegate相称于class需要一种名字,class myclass{…}这个class的名字是myclass并且它包具有其他元素、常数或者函数,变量等跟char a二a不一样,它不包具有其他的元素,a就是一种变量°而myclass不是变量,它只一种名字°而myclass a=newmyclass;a才是变量,是类的一种实例在这里,这个delegate的名字是Mydelegate,也并不是一种变量
16.变量从顾客角度来说,是存储信息的基本单元,从系统角度来说,变量就是计算机内存中的一种储存空间
17.静态措施不能用类的实例来访问,必须用类名来访问
18.数组的申明数组的类型[数组的元素个数]数组的名字;数组个数可以通过数组名加圆点加Length获得如arr.Length表达arr数组的个数
19.在进行批量处理数据的时候,我们要用到数组,数组是一组类型相似的有序数据.
20.数组的初始化:int口al=new int[]{1,2,3};为何是new int□,而不是new al呢:由于int口是类型,al是int口类型的一种实例.并且al所代表的是{1,2,3},并不是函数,与delegate intMyclass;不一样,Myclass虽然是一种名字,但它可以代表一种函数,不是常数.原则:类型背面的名字假如可以代表函数,则这个名字就是一种类型,假如类型背面的名字代表常数,则这个名字不是一种类型,只是类型的一种变量.或者可以用另一种说法:假如名字背面具有0,{},口则在赋值或设定实例的时候new背面要用该名字作为类型.
21.变量名不能与C#中的关键字名称相似;变量名不能与C#中库函数名称相似
22.静态变量static inta;一旦静态变量所属的类被加载,直到包括该类的程序运行结束前它将一直存在
23.稳性数据转换实际上就是从低精度的数据转换成高精度的的数据类型如ushort转换成int.
24.隐式枚举转换容许把十进制数0转换成任何枚举类型,对其他整数则不存在这种隐式转换
25.从元素类型为TS的数组类型S到元素类型为Tt的数组类型T转换,假如元素类型为值类型,则不能进行隐式转换
6.
2.1显式数值转换显式数值转换是指当不存在相应的隐式转换时,从一种数字类型到另一种数字类型的转换包括,•从sbyte至lj byte,ushoit.uiiit.ulong.或cliaio•从byte到sbytu或cliar0•从short至Jj sbyte.byte,ushort.uiiit.ulong.或char•从ushort至lj sbyte,bytu.short.或char•从iiit至lj sbyte.byte.short,ushort.uint.ulong.或char•从uint至lj sbyte.byte,short,ushort.mt.或char•从long至lj sbyte.byte,short,ushoit.iiit.uiiit.ulong.或chai\•从ulong至lj sbyte.byte,short,ushort.iiit.uiiit.long,或char•从chai,到sbyte.byte,或short•从float至lj sbyte.byte,short ushort.iiit.uiiit.long,ulong.char.或decimal0•从double至lj sbytu.byte,short,ushort.int.uiiit.long,ulong.char,float or或
26.有一种元素类型为int的枚举类型E,则当执行从E到byte的显示枚举类型转换时,实际上作的是从血到byte的显示数字转换;当执行从byte到E的显式枚举转换时,实际上是执行byte至lj int的隐式数字转换如Weekday day;day=Weekday3;实际上是E到byte的显示枚举类型转换
27.怎样使用枚举enum Color!red=0,yellow,blue,green,purple;Color colorarr=new Color;Color arr=Color2;Console.WriteLineColor arr{0}^,Color arr;则其输出成果为blue.
28.赋值操作符=和条件操作符按照右结合的原则,即操作从右到左的次序执行Y=x100:
1.
29.枚举类型的加法Weekday dayl=Weekday.Sunday;Weekdayday2=Weekday.Saturday;Weekday day3=day1+6;枚举型加法实际上枚举基类型元素相加即一般为int型相加
30.假如两个整数类型的变量相除又不能整除,返回成果是不不小于相除之值的最大整数
31.求余运算5%3=2;5%
1.5=
0.
5.
32.as操作符用于通过引用转换或装箱转换将一种值显式地转换成指定的引用类型
33.位运算符就是对数按二进制位进行运算的操作符位运算中的异或运算,当两个位相似时,异或运算成果为0,不相似时异或运算为
1.移位运算,左称位将操作数向左位移,高位被抛弃,低位次序补
0.右移运算时,假如X为非负数,最高位设为0;假如X为负数,最高位设为1,即最大为一
1.
34.自增自减操作符自增自减操作符有前缀和后缀之分对于前缀操作符,遵行的原则是“先增减,后使用”,后缀则相反,“先使用,后增减”
35.new操作符new操作符用于创立一种新的类型实例它有三种形式1,对象创立体现式2,数组创立体现式3代表创立体现式
36.typeof操作符用于获得系统原型对象的类型
37.check和uncheck操作符只影响其置于括号中的运算的溢出检查二流程控制
1.C#提供的选择语句有if和switch语句
2.假如if或else语句包括的嵌套语句只包括一条执行语句,则嵌套部分的大括号可以省略
3.每一条else与离它近来且没有其他else与之配对的if相搭配
4.if语句仅容许布尔数据类型的成果例if args.length=0是对的的而if args,length是不对的的args.length返回一种整形数integero
5.switch语句是只能有一种default标签
6.C#中它规定每个case标签项后使用break语句或中转语句goto,即不容许从一种case自动遍历到其他case.假如想遍历其他语句,则可以加入下面两条跳转语句goto caselable:跳至标签语句执行Goto default:跳至default标签执行7,数组的初始化int口al二new int][]{1,2,3,4,5}S.在事先懂得循环次数的条件下,用for循环是比较以便的
9.while语句中容许使用break语句来结束循环也可以使用continue语句来停止内嵌语句的执行,继续进行while循环
10.可以使用break和continue语句来控制循环的体现如规定打印除7以外的0到9的语句,只需要在到打印7的时候,跳出打印语句就可以了For inti=0;i9;i++{if i==7continue;console,write i;}
11.foreachMyint xin Prime{
12.预编译和条件编译都是以#开头的可以协助我们在程序执行过程中发出编译的错误或警告
13.溢出的处理用checked来检测
14.预处理指令假如出目前其他输入输出元素中间就不会被执行中writeLine或Readline等中间三类LC#中的类只支持单继承
2.对类组员的访问
1.公有组员Public,容许外部访问
2.私有组员Private,只容许类中的组员访问派生类都不能访问
3.保护组员Protected.以便派生类的直接访问,同步又但愿对外部是隐藏的
4.内部组员Internal.对于同一包内的程序或库是透明的而对于包外是隐藏的
5.类中的组员要么是静态要么是非静态一般来说,静态组员是属于类所有,非静态组员则属于类的实例一对象访问的时候静态类名.组员名;非静态实例名.组员名this.组员名static
6.关键字const用于申明常量,后跟数据类型的申明例public constdouble x=
1.0;
7.构造函数不申明返回类型,构造函数用于执行类的实例的初始化
8.折构函数在类的实例超过实用范围时,我们但愿收回它所占的存储时使用析构函数跟类名相似,只是在前面加上一种符号~9,值参数使用值参数时,初调用的措施不会修改内存中实参的值引用型参数引用型参数并不开辟新的内存区域当运用引用型参数向措施传递形参时,编译程序将把实际参数所在内存中的地址传递给措施
10.substring^,i从此实例检索子字符串子字符串从指定的字符位置开始且具有指定的长度String.indexofchar汇报指定Unicode字符在此字符串中的第一种匹配项的索引.1L输出型参数输出型参数也不开辟新内存,跟引用型参数同样,只是引用型参数在使用的时候不用需要对变量进行初始化,引用型参数用于传递措施的返回数据
12.假如形参中包括了数组参数,那么它必须在参数表中位于最终此外,参数只容许一维数组
13.静态措施可以访问类中的静态组员,但不能访问非静态组员但可以将类的实例当作参数传递给措施使用,指明详细的调用对象,这时就可以操作实例的静态和非静态组员了
14.类的措施的重载措施的名字相似,但参数个数或类型不一样,编译器就能懂得在什么时候调用什么措施
15.C#中,操作符重载总是在类中申明,并且通过调用类的组员措施来实现操作符重载可以合用于类的实例的操作
16.静态域的申明用static修饰符°无论建立多少个该类的实例,内存中只存在一种静态数据拷贝域相称于简朴组员变量在另一种类对静态域的访问可以通过对静态域所在类的public措施进行访问
17.简朴地说const型体现式的值在编译时形成,而只读域static readonly体现式的值在程序运行时才形成这种措施有助于版本的控制
18.对于静态域,类在装载时对其进行初始化;对于非静态域,在类的实例创立时进行初始化
19.虽然域和属性语法类似,但不能把属性当作变量那样使用也不能把属性当作引用型参数或输出型参数进行传递在属性的访问申明中,对属性的值的访问用get关键字标出对属性的值的写操作用set标出
20.不直接操作类的数据内容,而是通过访问器进行访问,它借助get和set对属性值进行读写事件和索引指示器
1.事件所申明的类型必须是一种代表类型delegate,代表类型应预先申明
2.在编写类的时候,我们可以编写事件向客户阐明发生了什么事情事件可以在类的属性或域中加以阐明,但事件的类型必须是代表型的我们可以预订事件保证事件初触发或撤销触发
3.索引指示器为我们象使用数组那样为类或类的实例添加途径列表,通过下标进行访问类中的信息
4.事件的申明格式例public eventeventhandler click;这个省略了事件访问申明
5.public eventeventhandler click{}这个没有省略事件访问申明大多数状况下不用事件o访问申明
6.索弓I指示器IPaddress[]m arrayips;public voidIPaddress this[int nindcx]{get{return marrayips[int nindex]}};this代表实例,我们象使用数组那样为类或类的实例添加途径列表.表实例[i]实际上代表的是类中的属性或域的信息列实例[仙.继承
1.C#中,一种派生类只能从一种类中继承Object类为所有类的基类
2.虚措施当类中的措施申明前加了virtual,我们称为虚措施,它在执行时可以被派生类变化派生类中0verride+虚措施虚措施在基类中定义,则基类运行虚措施时会实际运行派生类中的措施还必须指明,基类实例=派生类实例
3.抽象类abstract.抽象类只能作为其他类的基类,不能直接实例化假如一种非抽象类从抽象类中派生,则其必须通过重载来实现所有继承而来的抽象组员抽象类是特殊的虚类
4.在派生类中重新定义虚措施,规定措施名称,参数个数和类型必须与基类虚措施完全一致
5.只能在抽象类中申明抽象措施抽象类可以作为非抽象类的基类,也可以作为派生类我们可以运用抽象措施来重载基类虚措施,这时基类中的虚措施就被拦截了
6.密封类不能继承,密封类不能同步又是抽象类,抽象类总是但愿被继承密封类不也许有派生类,假如密封类中有虚组员函数,则该组员可以转化成非虚的,virtual无效
7.密封措施可以防止措施的重载不是所有组员措施都可以作为密封措施,密封措施必须对基类的虚措施进行重载,提供详细的实现措施因此,在措施的申明中,sealed修饰符总是和override修符同步使用
8.抽象属性,抽象措施只容许在抽象类中申明抽象类的这些组员交给派生类去实现必须在非抽象类中重载抽象属性,非抽象类不容许存在抽象组员属性申明时假如有sealed,则必须同步有override.修饰符
9.抽象措施在派生类中不能用base关键字会访问接口
1.每个组件都是独立的,有其独特的功能,只能通过接口与外界通讯,当一种组件需要提供新的服务时,可以通过新的接口来实现
2.组件应当具有与编程语言无关的特性组件模型是一种规范,不管采用哪种语言设计组件,都必须遵守这一规范
3.在接口的申明体中,可以定义接口的组员,接口的组员可以是措施,属性,索引指示器和事件
4.接口继承和类继承不一样,接口继承只是阐明继承C#中类继承只能是单继承,但接口可以是多继承被继承的接口应当是访问得到的,不能从private或internal类型的接口中继承
5.对一种接口的继承也就继承了这个接口的所有组员
6.接口组员不能是常量,域,操作符,构造函数或析构函数,并且不能包括所有的静态组员
7.接口组员默认的访问方式是public,接口组员申明不能包括任何修饰符与不能加abstract,public,protected....
8.假如底层组员的命名与高级组员的命名同样,那么底层组员将覆盖同名高级组员但由于接口的多继承性,假如两个父组员具有两个相似名的组员,这就产生了两义性,这时需要显示申明,明确指出需要调用哪个父接口组员
9.我们只需要记住一点一旦组员被覆盖后来,所有对其的访问都被覆盖后的组员“拦截”
10.接口定义不包括措施的实现部分,接口可以通过类和构造来实现用类来实现接口的时候,接口名称必须包括在类申明的基类列表中如class A:isequence,itest,假如类实现了接口,那么类也隐式地继承了该接口的所有父接口,不管这些父接口有无在类的申明的基类列表中出现1L一种类可以实现多种接口假如类中每个组员都明显地指出了被实现的接口,通过这种途径被实现的接口我们称之为显式接口组员显式接口组员只能通过接口调用,而不能通过类调用
12.不能在措施调用,属性访问,以及索引指示器访问中通过全权名访问显式接口组员执行体实际上,显式接口组员执行体只通过接口的实例,仅仅引用接口的组员名称来访问
13.显式接口组员执行体的接口必须显式地出目前类的基类列表中,虽然类隐式的实现了接口
14.接口的组员包括它自己申明的组员,并且包括该接口所有父接口申明的组员在接口的映射上,不仅要对接口申明中显式申明的所有组员进行映射,并且要对隐式地从父接口中继承而来的接口组员进行映射包括与父接口中相似名称的组员
15.类必须为所有基类表中列出的所有接口组员提供详细的实现
16.类中使用Private,protected和static修饰符的组员不能参与实现接口的映射
17.假如子接口组员要覆盖父接口的组员,组员的名字必须相似,并且子接口组员名称前用new.
18.一种类继承了它的基类提供的所有接口的实现假如不显式的重新实现接口,派生类就无法变化从基类中继承来的接口映射
19.显式阐明的接口组员不能被申明为虚的但可以通过显式接口实现调用另一种措施,这个被调用的措施可以申明为虚的容许被派生类重载
20.继承了接口实现的类可以对接口进行重实现,这个接口规定是在类申明的基类列表中出现过的
21.抽象类容许将接口的措施映射到抽象的组员措施显式阐明的接口组员不能是抽象的,但它容许调用抽象的措施组织应用程序
1.使用一般的函数库,在程序链接时将库中的代码拷贝到可执行文献中,这叫静态链接
2.动态链接库不一样样,只有程序在使用时才将其拷贝,并且只有一份拷贝动态链接库是一种程序模块,它不仅包括可执行代码,并且一般还包括了多种类型的预定义数据和资源
3.装配有两种类型应用程序和库应用程序均有一种入口,能常扩展名为.exe库的扩展名,dH.
4.名字空间的申明要么在编译单元源文献第一行,要么作为组员也目前别的名字空间中
5.名字空间的组员可以是类,构造,枚举,或代表等也可以是另一种名字空间
6.别名指示符为我们提供了一种标识符,在整个编译单元,或是在名字空间主体之中,这个标注符作为名字空间或类型的别名
7.别名指示符不能与同一编译单元或名字空间中的其他组员重名别名只在包括它名字空间的主体内有效,但把别名放到名字空间外部,编译单元内,则别名对于编译单元内的所有名字空间是有效的
8.假如名字空间使用指示符使用了名字空间,但没有指出使用其嵌套的名字空间,则只能可以使用直接使用该名字空间中的组员,而不能直接使用其嵌套组员
9.可以using类型、名字空间
10.注意别名指示符不能与同一编译单元或名字空间的中的其他它组员同名文献操作
1.system.IO提供的类支持输入输出的类型stream,.
2.文献是存储在永久介质中的数据的有序集合流也是一种对数据读写操作的基本对象,但它除了文献流外,尚有其他多种类型,可以分布在网络中,内存和磁带中
3.Directory类进行目录管理File类进行文献管理
4.读写文献按文本模式读写streamreader,streamwriter.按二进制读写文本流BinaryReader,Binary Writer.String,:.open orcreate=
5.new,BinaryWrlterStream
6.Binarywriter binWriter=new Binarywriter,;binWriter.Write showStatusBar;将字符串的内容showStatusBar以二进制方式写入流str㊀am并根据所使用的编码和写入流的特定字符,提高流的目前位置(流的长度)。
个人认证
优秀文档
获得点赞 0