2022年c学习笔记c重点_第1页
2022年c学习笔记c重点_第2页
2022年c学习笔记c重点_第3页
2022年c学习笔记c重点_第4页
2022年c学习笔记c重点_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C#学习笔记1. C# 具有全部面对对象的语言的全部特性:封装,继承,多态;在 C# 系统中,所有的类型都可以看作一个对象;C# 只答应单继承,即一个类不会有多个基类,C# 不会有全局函数, 不会有全局变量, 不会有全局常数, 全部的一切只能封装在一个类中;2. .net 包括四个部分: vos 类型系统;元数据 ;公用语言规范 ;虚拟执行系统;3. using system表示导入名称空间;4. 让我们从第一个程序开头就记得:每个东西都必需属于一个类,类里面的方法总是为我们完成某件工作的;在 C# 中,程序的执行总是从 main方法开头的, 一个程序中不答应显现两个或两个以上的 main方法

2、;对于习惯学 C 掌握台程序的读者,必需要牢记:main方法必需包含在一个类中;5. 利 用 string 可 以 方 便 地 对 字 符 串 进 行 连 接 或 剪 切 ; 例 : string s=” good” +” morning” ;char x=s3字符串可以通过下标进行索引,得到一个字符;6. 我们可以用 / 进行单行标注, /* */ 进行多行标注;7. 在 C 和 C+ 中,任何非 0 值都表示真,在C#中,任何非 0 值都不能代替true.在其它类型的整型值和布尔值之间不存在任何的转换,法的;将整型转换成布尔型是不合8. 把一系列相关的变量组织成单一实体的过程称为生成结构的

3、过程;这个单一实体的类型叫结构类型,每一个变量就是结构的成员;9. 结构类型包含的成员类型可以相同,也可以不同;我们甚至可以把一个结构类型当作另一个结构成员的类型;10.枚举 实际上是为一组在规律上密不行分的整数值供应便于记忆的符号;结构类型变量的值由各个成员的值组合而成;而枚举就不同,枚举类型的变量在某一时刻只能取枚举中某个元素的值;依据系统的设定,每个元素的类型都为整型;且第一个元素的值为 0,后面的每个元素梯加 1,也可以直接赋值;如把前面第一个元素的值设为 1,后面的元素不用设,系统自动将后面元素的值递加 1.11.C# 中另一大数据类型是 引有类型 ;其含义是该类型的变量不直接储备所

4、包含的值,而是指向它所要储备的值;也就是说 引用类型储备实际数据引用值的地址;12.类是面对对象编程的基本单位,是一种包含数据成员,函数成员和嵌套类型的数据结构;类和结构都包含了自己的成员,但它们的区分是:类是引用类型,而结构是值类型;13.假如我们对 某个类定义了一个变量,就我们就将它称为类的一个实例;14.我们常用到的类:object 类;这个类是其它全部类的基类,其它类型可以直接或间接地从 object 类中继承; 因此,对一个 object 类的变量可以赋于任何类型的值;15.代表? 在声明代表时,只需要指定代表指向的原型的类型,它不能有返回值,也不能带有输出类型的参数;如:deleg

5、ate int Mydelegate.在使用的时候: Mydelegate d=new Mydelegatep.instanceMethod. 为什么不用delegate d= new Mydelegatep.instanceMethod呢?缘由是delegate相当于 class需要一个名字, class myclass 这个 class的名字是 myclass而且它包含有其它元素、常数或者函数,变量等;跟char a=a 不同,它不包含有其它的元素,a 就是一个变量;而myclass不是变量,它只一个名字;而myclass a=new myclass; a才是变量,是类的一个实例;在这里,

6、这个 delegate的名字是 Mydelegate,也并不是一个变量;16.变量 从用户角度来说,是储备信息的基本单元,从系统角度来说,变量就是运算机内存中的一个储存空间;17.静态方法不能用类的实例来拜访,必需用类名来拜访;18.数组的声明 :数组的类型数组的元素个数 数组的名字 ;数组个数 可以通过数组名加圆点加 Length 获得;如 arr.Length表示 arr 数组的个数19.在进行批量处理数据的时候,我们要用到数组 .数组是一组类型相同的有序数据.20.数组的初始化 :int a1=new int1,2,3; 为什么是 new int,而不是 new a1呢:由于 int是类

7、型 ,a1是 int类型的一个实例 .而且 a1所代表的是 1,2,3,并不是函数 .与 delegate int Myclass;不同 ,Myclass虽然是一个名字 ,但它可以代表一个函数 ,不是常数 .原就 :类型后面的名字假如可以代表函数 ,就这个名字就是一种类型 .假如类型后面的名字代表常数 ,就这个名字不是一种类型 ,只是类型的一个变量 .或者可以用另一种说法 :假如名字后面含有 , 就在赋值或设定实例的时候 new 后面要用该名字作为类型 .21.变量名不能与C#中的关键字名称相同;变量名不能与C# 中库函数名称相同;22.静态变量: static int a;一旦静态变量所属的

8、类被加载,束前它将始终存在;直到包含该类的程序运行结23.稳性数据转换实际上就是从低精度的数据转换成高精度的的数据类型;如:ushort转换成 int.24.隐式枚举转换答应把十进制数0 转换成任何枚举类型,对其它整数就不存在这种隐式转换;25.从元素类型为TS 的数组类型 S 到元素类型为Tt 的数组类型T 转换,假如元素类型为值类型,就不能进行隐式转换;26.有一个元素类型为 int 的枚举类型 E,就当执行从 E 到 byte 的显示枚举类型转换时,实际上作的是从 int 到 byte 的显示数字转换; 当执行从 byte 到 E 的显式枚举转换时,实际上是执行 byte 到 int 的

9、隐式数字转换; 如:Weekday day;day=Weekday 3;实际上是 E 到 byte 的显示枚举类型转换;27.如何使用枚举:enumColorred=0, yellow, blue,green,purple ;Color color_arr = new Color;Color_arr=Color 2;Console.WriteLine“ Color_arr0 ” ,Color_arr;.就其输出结果为 blue.28.赋值操作符() 和条件操作符(?:)依据右结合的原就,即操作从右到左的次序执行; Y=x10. 0:1.29.枚举类型的加法 :Weekday day1=Week

10、day.Sunday; Weekday day2=Weekday.Saturday;Weekday day3=day1+6; 枚举型加法 实际上枚举基类型元素相加即一般为( int 型相加);30.假如两个 整数类型 的变量相除又不能整除,数;31.求余运算: 5%32;5%1.50.5.返回结果是不大于相除之值的最大整32.as操作符 用于通过引用转换或装箱转换将一个值显式地转换成指定的引用类型;33.位运算符 就是对数按二进制位进行运算的操作符;位运算中的异或运算,当两个位相同时,异或运算结果为0,不相同时异或运算为1.移位运算,左称位将操作数向左位移,高位被抛弃,低位次序补 0.右移运算

11、时,假如 X为非负数,最高位设为 0;假如 X为负数,最高位设为 1,即最大为 1.34.自增自减操作符:自增自减操作符有前缀和后缀之分;对于前缀操作符,遵行的原就是“ 先增减,后使用” ,后缀就相反,“ 先使用,后增减” ;35.new操作符 :new操作符用于创建一个新的类型实例;它有三种形式:1,对象创建表达式; 2,数组创建表达式; 3代表创建表达式;36.typeof操作符 用于获得系统原型对象的类型;37.check 和 uncheck操作符 只影响其置于括号中的运算的溢出检查;二 流程掌握1.C#供应的挑选语句有 if和switch语句;2.假如 if或else语句包含的嵌套语句

12、只包含一条执行语句,略;就嵌套部分的大括号可以省3.每一条 else与离它最近且没有其它 else与之配对的 if相搭配;4.if语句仅答应布尔数据类型的结果;例:ifargs.length=0是正确的;而 ifargs.length是不正确的; args.length返回一个整形数( integer);5.switch语句是只能有一个 default标签;6.C# 中它要求每个 case标签项后使用 break语句或中转语句goto,即不答应从一个case自动遍历到其它 case.假如想遍历其它语句,就可以加入下面两条跳转语句:goto case lable:跳至标签语句执行;Goto de

13、fault:跳至 default标签执行;7.数组的初始化 :int a1=new int1,2,3,4,58.在事先知道循环次数的条件下,用for循环是比较便利的;9.while语句 中答应使用 break语句来终止循环;也可以使用 continue语句来停止内嵌语句的执行,连续进行 while循环;10.可以使用 break和continue语句来掌握循环的表达;如:要求打印除 7以外的 0到9的语句,只需要在到打印 7的时候,跳出打印语句就可以了; Forint i=0;i9;i+ if i=7 continue;console.writei;11.foreachMyint x in P

14、rime12.预编译和条件编译都是以 错误或警告;# 开头的;可以帮忙我们在程序执行过程中发出编译的13.溢出的处理用 checked来检测;14.预处理指令假如显现在其它输入输出元素中间就不会被执行;中 writeLine或Readline等中间;三 类1.C#中的类只支持单继承;2.对类成员的拜访: 1.公有成员; Public,答应外部拜访; 2.私有成员; Private,只答应 类中的成员拜访; 派生类都不能拜访; 3.爱护成员;Protected.便利派生类的直接拜访,同时又期望对外部是隐匿的;的;而对于包外是隐匿的;4.内部成员; Internal.对于同一包内的程序或库是透亮5

15、.类中的成员 要么是静态要么是非静态;一般来说, 静态成员是属于类全部,非静态成员就属于类的实例对象;拜访的时候:静态:类名 .成员名;非静态:实例名 .成员名( this.成员名) static6. 关键字 const用于声明常量,后跟数据类型的声明;例:public const double x=1.0;7.构造函数 不声明返回类型 ,构造函数用于执行类的实例的初始化;8.折构函数 在类的实例超出有用范畴时,我们期望收回它所占的储备时使用;析构函数跟类名相同,只是在前面加上一个符号:9.值参数 :使用 值参数 时,初调用的方法不会修改内存中实参的值 ;引用型参数: 引用型参数并不开创新的内

16、存区域;当利用引用型参数向方法传递形 参时,编译程序将把实际参数所在内存中的地址传递给方法;10.substring0,i 从今实例检索子字符串; 子字符串从指定的字符位置开头且具有指定的长度;String.indexofchar 报告指定 索引 .Unicode 字符在此字符串中的第一个匹配项的11.输出型参数 : 输出型参数也不开创新内存,跟引用型参数一样,只是引用型参数在使用的时候不用需要对变量进行初始化,引用型参数用于传递方法的返回数据;12.假如形参中包含了数组参数,那么它必需在参数表中位于最终;另外,参数只允许一维数组;13.静态方法 可以拜访类中的静态成员,但不能拜访非静态成员;

17、但可以将类的实例当作参数传递给方法使用,指明详细的调用对象,这时就可以操作实例的静态和非静态成员了;14.类的方法的重载 :方法的名字相同, 但参数个数或类型不同,编译器就能知道在什么时候调用什么方法;15.C# 中, 操作符重载 总是在类中声明,并且通过调用类的成员方法来实现;操作符重载可以适用于类的 实例的操作 ;16.静态域的声明用 static修饰符;无论建立多少个该类的实例,内存中只存在一个静态数据拷贝;域相当于简洁成员变量;在另一个类对静态域的拜访可以通过对静态域所在类的 public方法进行拜访;17.简洁地说: const型表达式 的值在编译时形成,而只读域 static re

18、adonly表达式的值在程序运行时才形成;这种方法有利于版本的掌握;18.对于静态域,类在装载时对其进行初始化;对于非静态域,在类的 实例创建 时进行初始化;19.虽然域和属性语法类似,但不能把属性当作变量那样使用;也不能把属性当作引用型参数或输出型参数进行传递;在属性的拜访声明 中,对属性的值的拜访用 get关键字 标出;对属性的值的写操作 用set标出;20.不直接操作类的数据内容,而是通过拜访器进行拜访,它借助 get和set对属性值 进行读写;大事和索引指示器1. 大事所声明的类型必需是一个代表类型delegate,代表类型应预先声明;2. 在编写类的时候,我们可以编写大事向客户说明发

19、生了什么事情;大事可以在类的 属性或域 中加以说明,但大事的类型必需是 大事初触发或撤消触发;代表型 的;我们可以预订大事确保3. 索引指示器为我们象使用数组那样 为类或类的实例添加路径列表,通过 下标进行拜访类中的信息;4. 大事的声明格式:例:public event eventhandler click;这个省略了大事拜访声明;5. public event eventhandler click; 这个没有省略大事拜访声明;大多数情形下不用大事拜访声明;6. 索引指示器: IPaddress m_arrayips;public void IPaddress thisint nindex

20、getreturn m_arrayipsint nindex; this代表实例,我们象使用数组那样 为类或类的实例添加路径列表 . 实例 i实际上代表的是 类中的属性或域的信息列表;实例 i.继承1. C# 中,一个派生类只能从一个类中继承;Object类为全部类的基类;2. 虚方法 :当类中的方法声明前加了 virtual,我们称为虚方法,它在执行时可以被派生类转变;派生类中 Override+ 虚方法;虚方法在基类中定义,就基类运行虚方法时会实际运行派生类中的方法;仍必需指明,基类 实例派生类 实例;3. 抽象类 :abstract.抽象类只能作为其它类的基类,不能直接实例化; 假如一个

21、非抽象类从抽象类中派生,就其必需通过 重载 来实现全部继承而来的抽象成员;抽象类是特别的虚类;4. 在派生类中重新定义虚方法,要求方法名称,参数个数和类型必需与基类虚方法完全一样;5. 只能在 抽象类 中声明 抽象方法 ;抽象类 可以作为非抽象类的基类,也可以作为派生类;我们可以利用抽象方法 来重载基类虚方法,这时基类中的虚方法 就被拦截了;6. 密封类不能继承 ,密封类不能同时又是抽象类,抽象类总是期望被继承;密封类不行能有派生类,假如密封类中有虚成员函数,就该成员可以转化成非虚的,virtual无效;7. 密封方法 可以防止方法的重载;不是全部成员方法都可以作为密封方法,密封方法必需对基类

22、的虚方法进行重载,供应详细的实现方法; 所以,在方法的声明中,sealed修饰符总是和 override修符同时使用;8. 抽象属性,抽象方法 只答应在 抽象类 中声明;抽象类的这些成员交给派生类去实现;必需在非抽象类中 重载 抽象属性,非抽象类不答应存在抽象成员;属性声明时假如有 sealed,就必需同时有 override.修饰符;9. 抽象方法 在派生类中不能用 base关键字 会拜访;接口1. 每个组件都是独立的,有其特殊的功能,只能通过接口与外界通讯,当一个组件需要供应新的服务时,可以通过新的接口来实现;2. 组件 应当具有与编程语言无关的特性;组件模型是一种规范,不管采纳哪种语言设

23、计组件,都必需遵守这一规范;3. 在接口的声明体中,可以定义接口的成员,接口的成员可以是方法,属性,索引指示器和大事;4. 接口继承和类继承不同,接口继承只是说明继承;C#中类继承只能是单继承,但接口可以是多继承;被继承的接口应当是拜访得到的,不能从 private或internal类型的接口中继承;5. 对一个接口的继承 也就继承了这个接口的全部成员;6. 接口成员不能是常量,域,操作符,构造函数或析构函数,而且不能包括全部的静态成员;7. 接口成员默认的拜访方式是public,接口成员声明不能包含任何修饰符;与不能加 abstract,public,protected .8. 假如 底层成

24、员的命名与高级成员的命名一样,那么底层成员将掩盖同名高级成员;但由于接口的多继承性,假如两个父成员具有两个相同名的成员,这就产生了两义性,这时需要显示声明,明确指出需要调用哪个父接口成员;9. 我们只需要记住一点:一旦成员被掩盖以后,全部对其的拜访都被掩盖后的成员“ 拦截” ;10.接口定义不包括方法的实现部分,接口可以通过类和结构来实现;用类来实现接口的时候, 接口名称必需包含在类声明的 假如类实现了接口,那么类也隐式地继承了 口有没有在类的声明的基类列表中显现;基类列表 中;如:class A:isequence,itest, 该接口的全部父接口,不管这些父接11.一个类可以实现多个接口;

25、假如类中每个成员都明显地指出了被实现的接口,通过这种途径被实现的接口我们称之为显式接口成员;调用,而不能通过类调用;显式接口成员只能通过接口12.不能在方法调用,属性拜访,以及索引指示器拜访中通过全权名拜访显式接口成员执行体;事实上 ,显式接口成员执行体 员名称来拜访;只通过接口的实例,仅仅引用接口的成13.显式接口成员执行体的接口必需显式地显现在类的基类列表中,即使类隐式的实现了接口;14.接口的成员包括它自己声明的成员,而且包括该接口全部父接口声明的成员;在接口的映射上 ,不仅要对接口声明中显式声明的全部成员进行映射,而且要对隐式地从父接口中继承而来的接口成员进行映射;员;包括与父接口中相

26、同名称的成15.类必需 为全部基类表中列出的全部接口成员供应详细的实现;16.类中使用 Private,protected和 static修饰符的成员不能参加实现接口的映射;17.假如子接口成员要掩盖父接口的成员,成员的名字必需相同,而且子接口成员名称前用 new.18.一个类 继承了它的基类供应的全部接口的实现 生类就无法转变从基类中继承来的接口映射;假如不显式的重新实现接口,派19.显式说明的接口成员 不能被声明为虚的; 但可以通过显式接口实现调用另一个方法,这个被调用的方法可以声明为虚的;答应被派生类重载;20.继承了接口实现的类可以对 表中显现过的;接口进行重实现 ,这个接口要求是在类声明的基类列21.抽象类答应将接口的方法映射到抽象的成员方法; 显式说明的接口成员不能是抽象的,但它答应调用抽象的方法;组织应用程序1. 使用一般的函数库,在程序链接时将库中的代码拷贝到可执行文件中,这叫 静态链接 ;2. 动态链接库 不一样,只有程序在使用时才将其拷贝,并且只有一份拷贝;动态链接库是 一种程序模块,它不仅包括可执行代码,而且通常仍包括了各种类型的预定义数据和资源;3. 装配有两种类型:应用程序和库;应用程序都有一个入口,能常扩展名为:.exe;库的扩展名: .dll.4. 名字空间 的声明要么在编译单元(源文件)第一行,要么作为成员也现在别的名字空间中;5.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论