C#(.NET)知识知识总结.doc_第1页
C#(.NET)知识知识总结.doc_第2页
C#(.NET)知识知识总结.doc_第3页
C#(.NET)知识知识总结.doc_第4页
C#(.NET)知识知识总结.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

第一章 第一点:.NET(C#语言)的发展方向.NET学习主线:C#语言的基础特性-WINFORM(C/S模式编程)-WPF-ASP.NET(WebForm)-Silverlight-Android第二点:学习.NET课程体系1-6章:C#面向对象编程第一章:C#的介绍以及异常处理第二章:C#的类与对象的关系,以及属性与方法(静态方法,构造方法,重载)第三章:C#基本数据类型(值类型与引用类型),结构体,枚举等第四章:C#的面向对象之继承与多态第五章:C#中接口的使用以及简单工厂设计模式-7-12章:C#的核心技术与高级特性第七章:TreeView控件与ListView控件第十一章:集合与泛型集合指导学习课:.NET三层结构体系(2次课)第八章:委托与事件第九章:多线程第十章:文件及IO操作第十二章:网络编程(WinSocket编程)第十三章:反射与序列化-第三点:.NET体系的认识1.NET的理解:.NET是平台,C#是.NET平台上的一门语言2.NET的发展版本:.NETFramework1.0,.NETFramework2.0,.NETFramework3.0,NETFramework4.0,总共用时10年。3.NET的组成部分:CLR(Common Language Runtime)公共语言运行时,.NetFramework核心内库(FCL)4.NET的运行原理:C#程序-(CLR第一次编译)-MSIL(中间语言)-(JIT第二次编译)-机器语言(.EXE,.DLL)为什么需要中间语言?因为.NET是跨语言的,在.NET平台上的任何语言都可以实现互操作性。中间语言就是.NET在跨语言交互时提供语言的互操作性。CLR由两部分组成:CTS(通用类型系统)和CLS(公共语言规范)例如:基本数据类型 CTSshort System.Int16int System.Int32long System.Int64string System.StringCLS(公共语言规范):运行在.NET平台上的所有托管代码所遵循的语言标准,如垃圾回收,异常处理等。5.C#异常处理机制:Try.catch.finally:try:引发异常,catch:捕获异常,finally:释放资源组合形式:1.try.catch2.try.catch.finally3.try.finally4.try.catch.catch.finally5.ctach.finally(错误)问题:.NET Framework 有什么组成?答: 有公共语言运行时(CLR)和.NET Framework 基类库(FCL)这两大组件主成。第二章第二章:类与对象关系,属性与方法本章目标:1.什么是类: 具有相似特性(属性)和行为(方法)的对象的集合2.什么是对象:在现实世界中存在的,并且看得见摸得着的一切事物。3.类与对象之间的关系:一对多的关系。类是对象的蓝图。4.面向对象的三大特性:封装,继承,多态5.类的访问修饰符与成员访问修饰符的使用区别:类的访问修饰符:,public(公有的)Internal(默认访问修饰符)成员访问修饰符:Public允许类的使用者从外部进行访问。privateC# 中的私有成员仅限于类中的成员可以访问,从类的外部访问私有成员是不合法。Protected为了方便派生类的访问,有希望成员对于外界隐藏的,这时可以使用protected修饰符声明成员为保护成员。Internal对于同一应用程序是可以访问的。6.类中分为两种成员:成员变量(字段,属性),成员函数(方法)7.类的实例化:1.将一个抽象的概念转换为一个具体的概念的过程。2.类的实例化分为两种状态:实例化前(类的引用),实例化后(类的实例)。8.属性的作用:1.封装字段,为字段提供有效的数据验证。2.为其他类提供一个外部的访问接口9.属性的分类:只读属性,只写属性,可读可写属性10.方法的分类:实例方法,静态方法,构造方法(构造函数)实例方法: 当一个类被实例化后,通过类的实例(对象)调用的方法。静态方法: 当直接通过类名调用的方法。静态方法中只能包含静态成员变量。构造方法: 当类的实例(对象)被创建的过程中,所调用的方法称为构造方法。特点: 构造方法与类名相同,且没有返回类型。11.方法的重载:方法名相同,参数的个数,顺序,类型不同。重载与方法的返回类型无关。类的概念:同一类事物共同特点的集合,对象的概念:实际存在的事物类和对象的关系:找出生活中的某类事物的共同特点,设计成类再从类创建出程序中的对象郭靖是大侠定义类的语法:访问修饰符 class 类名/成员变量/成员方法/定义下汽车类public class Cars/定义字段string name;string address;double pailiang;string color;/定义方法,刹车public void ShaChe()Console.WriteLine(刹车);/定义方法,行驶public void Run()Console.WriteLine(行驶);类的命名规范:组成类名的单词首字母要大写定义对象的语法:类名 对象名=new 构造方法();给字段赋值:对象名.字段名=值;取字段的值:对象名.字段名调用方法:对象名.方法名()调用方法时需要注意的问题:(1)方法有没有参数(2)如果方法有参数,那么参数有几个,每个参数的数据类型是什么(3)方法有没有返回值(4)如果方法有返回值,返回值的类型是什么按值传递和按引用传递:(1)按值传递不会影响Main方法中的变量值(2)按引用传递会改变Main方法中的变量值(3)ref关键字表示按引用传递,定义方法时和调用方法时均需要使用用out修饰符修饰的参数,在方法结束之前必须要赋值,调用方法时的参数前也必须加上out修饰符,如:访问修饰符 返回值类型 方法名(out 数据类型 参数名)。调用时:方法名(out 参数名)将数组作为参数传递给方法时,使用按引用传递的方式方法的重载:定义同名的方法,使用方法的参数来区分同名的方法区分同名的方法时,使用参数的个数,参数的类型来区分,如:public void Add(int x,int y)public void Add(double x,int y)就是方法的重载,()中的参数类型不同public void Add(int x,int y,int z)public void Add(int x,int y)也是方法的重载,()中参数的个数不同多态:一种事物具有多种形态在C#中,多态包括两种情况:(1)重载:在同一类中,有同名但参数不同的方法(2)重写:在不同的类中,有同名的方法第三章第三章:C#数据类型本章目标:1.C#中的基本数据类型,以及关键字(const,readonly),复杂数据类型const:常量是在字段定义时初始化,是静态赋值readonly:只读的变量,可以在字段初始化或构造函数中动态赋值。注意:const与readonly不能同时存在复杂数据类型:DateTime类型,枚举类型(Enum)定义属性的语法:(生成属性Ctrl+R+E)访问修饰符 数据类型 属性名set字段名=value;getreturn 字段名;(1)属性名的首字母大写,通常与字段有关(2)set访问器用于给字段赋值,在赋值前可以进行数据正确性的验证(3)value是一个关键字,代表外界输入的一个值(4)get访问器用于得到字段的值(5)set访问器和get访问器并不是必须有的根据set和get访问器的不同组合,属性可分为3种(1)读/写属性,同时包含get和set访问器(2)只读属性,只包含get访问器(3)只写属性,只包含set访问器构造函数的概念:函数的名字与类名相同,并且没有返回值,这样的函数称为构造函数构造函数的作用:(1)初始化字段或属性(2)用于创建对象定义类后系统会提供一个不带参数的构造方法,一旦我们定义了其他的构造方法,系统将不再提供不带参数的构造方法,如果我们还需要使用这个不带参数的构造方法,需要先定义当this使用到构造方法中时,用于区分字段(属性)和参数,如:this.Name=name;this后的Name是属性,=号后的name是参数析构函数的概念:用开头,函数名和类同名,函数没有访问修饰符,函数没有参数,这样的函数称为析构函数如:类名()析构函数的调用规则:(1)一个类只有一个析构函数(2)析构函数没有访问修饰符,没有参数(3)析构函数由c#程序自动调用,程序员不能调用(4)析构函数的作用:用于回收无用对象所占用的内存空间const关键字称为编译时常量,在定义时就必须赋值readonly关键字称为运行时常量,在程序运行前可以多次赋值,但程序运行后,值无法改变2.C#中数据类型分类:值类型,引用类型值类型:将实际的值保存在内存的栈中引用类型:通过指针指向内存栈中实际值的地址。引用类型的本身保存在堆中。string s1 = null;/空引用s1 = ;/空值字符串属于引用类型,首先判断空引用再判断空值将值类型与引用类型作为方法的形参传递按值传递:将值类型作为方法的参数传递,实际上传递的是值的副本,在方法体中所做的任何修改,都不会影响原始值。按引用传递:引用类型作为参数传递,当方法体类的值发现改变,那么指向栈中的地址也需要改变。将值类型按引用传递方式:ref关键字,out关键字3.C#中类与结构体的区别4.C#中索引器的概念第四章static表示静态的,可以用在字段、属性、方法、类等的前面(1)静态字段:访问修饰符 static 数据类型 字段名;如何调用静态字段:类名.字段名分配空间的时间:声明对象时就分配空间,此空间直到整个程序结束时才会回收比较非静态的字段和方法:非静态的字段和方法在创建对象时才分配空间,当此对象不再使用时就回收空间,使用对象名.字段名和对象名.方法名()的方式调用(2)静态方法:访问修饰符 static 返回值类型 方法名()实现方法的步骤如何调用静态方法:类名.方法名();注意:静态的方法中只能使用静态的内容,如静态字段(3)静态属性:访问修饰符 static 数据类型 属性名getreturn 类名.字段名;set类名.字段名=value;(4)静态类:访问修饰符 static class 类名静态成员静态方法注意:A、用static修饰的类称为静态类B、静态类中的成员只能是静态的C、静态类不能被继承D、静态类不能创建对象(5)静态的构造方法:static 类名().静态的构造方法不能使用访问修饰符静态构造方法由系统自动调用定义索引器的语法:访问修饰符 返回类型 this数据类型 标识get return 内容;set例: /定于数组字段 Student stu; /定义构造方法,确认学员人数 public MyClass(int size) stu=new Studentsize; /定义索引器,根据学号查询信息 public Student thisint no get return stuno; set if(nostu.Length |no0) Console.WriteLine(学号有误!请检查后输入;); return; stuno=value ; /定义索引,根据书名查询信息 public Student thisstring name get foreach (Student temp in stu) return temp; Console.WriteLine(对不起,没有您找的姓名;); return null; 注意:(1)get访问器中,return后的内容的类型要和定义索引的返回类型一致(2)索引器一般用在将对象作为数组的情况(3)数据类型 标识数据类型根据具体情况进行定义(4)根据号中的不同数据类型可以实现索引器的重载(5)索引器类似于属性,也包含get和set访问器(6)索引器也类似于数组,可以根据下标访问元素,但索引器比数组更灵活,数组元素只能根据下标访问,索引器还可以根据其他类型进行访问第五章1.在C#继承中,如果子类继承父类,那么子类就必须继承父类的构造函数。如果父类没有默认构造函数,那么子类就必须显示调用父类带参的构造函数。2.在C#中,如果子类继承父类,在实例化子类的时候,首先执行父类的构造函数,再执行子类的构造函数。3.在C#继承中,父类可以派生多个子类,子类只能直接继承一个父类,继承具有传递性以及单根性的特点。1、继承上的概念:从现有类派生出一个新类,新类具有父类的特点,这样的方式成为继承,在程序中我们用是不是来判断父类和子类的关系,如:公交车是汽车,汽车是父类,公交车是子类草是猫类,草和猫类没关系2、继承的好处:(1)节省重复代码的书写(2)提高效率,节约精力3、如何实现继承:继承的语法:访问修饰符 class 类名:父类名成员方法注意:(1):表示继承(2)父类中已经有的属性和方法,在子类中不需要再定义(3)创建子类对象后,子类对象可以调用父类的属性和方法创建子类对象时,程序先调用父类无参的构造方法,再调用子类自己的构造方法,无论子类的构造方法是否有参数,始终调用父类无参的构造方法在子类中指定调用父类的构造方法:访问修饰符 子类名(【参数.】):base(参数1,参数2,.)语句注意:(1)base关键字表示调用父类的构造方法(2)base(参数1,参数2,.)中的参数只有参数名,没有数据类型(3)根据base()中的参数个数决定调用父类的哪个构造方法(4)base(参数1,参数2,.)中的参数名要和子类名(【参数.】)中的参数名相同使用base关键字还可以调用父类的方法:base.父类的方法名()继承的特点:(1)传递性:B类继承A类,C类继承B类,C类的对象可以访问B类和A类的公共属性和方法(2)单一性:子类只能有一个直接父类,即-子类名:父类名,:号后只有一个父类将父类对象指向子类的引用,如:父类 对象名=new 子类();将对象名强制转换后,可以调用父类和子类的公共属性集方法,如:(子类)对象名).方法名()或(子类)对象名).属性相当于:父类代表子类处理事务is关键字用来判断对象是否与某个类型兼容(一致),用法:对象 is 类名as关键字用来得到兼容类型的对象,如果类型不兼容则得到null,用法:对象 as 类名或 (对象 as 类名).方法()或(对象 as 类名).属性注意:不同类型的对象,即使进行强制转换,在编译时也会提示错误运动员 参加比赛小孩子 玩音乐演奏着 演奏乐器play子类和父类具有同名的方法,但方法的实现步骤不同,称为方法的重写实现重写的步骤:(1)在父类中将方法定义为虚方法,如:访问修饰符 virtual 返回值类型 方法名()实现方法的步骤关键字virtual表示此方法是虚方法(2)在子类中重写父类的方法,如:访问修饰符 override 返回值类型 方法名()实现方法的步骤关键字override表示重写父类同名的虚方法;注意:重写父类方法时,访问修饰符应该是一致的子类和父类可以有同名的方法,但建议区分父类和子类同名的方法区分方式有两种:(1)在父类中将方法声明为虚方法,在子类中重写父类的方法(2)在子类中用new关键字声明同名的方法面向对象的三大特点:继承、多态、封装多态由两种方式实现:(1)重载:在同一个类中,有同名,但参数类型和个数不同的方法(2)重写:在不同的类中,有同名但实现步骤不同的方法重载:public void Aa(int x)public void As(int x,string y)重写:public void Aa(int x) 4.抽象类(abstract)的特点:1.抽象类中既包含抽象方法又包含实例方法。2.有抽象方法的类一定是抽象类。3.抽象类可以被继承,但是不能被实例化。4.抽象类一般作为基类,子类继承抽象类,必须实现抽象类中的抽象方法。5.抽象类不能是密封类或静态类。抽象方法:只能定义没有实现的方法称为抽象方法定义抽象方法的语法:访问修饰符 abstract 返回值类型 方法名();注意:抽象方法没有号,用;号作为方法的结尾关键字abstract用于将类或方法声明为抽象的抽象类的特点:(1)抽象类是对子类的描述,就像模版,只有被子类继承,才有意义(2)抽象类不能被实例化,即不能创建对象 (3) 抽象类不能是密封类或静态类,即类不能使用关键字sealed和static(4)抽象类中可以有抽象方法和非抽象方法,但有抽象方法的类,一定是抽象类定义抽象类和抽象方法的目的:给子类提供一种规范,约束子类的行为当子类继承的父类是一个抽象类时,子类要么实现父类中所有的抽象方法,要么将自己也声明为抽象类,子类重写父类的抽象方法时,必须使用关键字override抽象类的作用:强制约束子类的行为。面向对象的三大特点封装: 隐藏内部实现,稳定外部接口。继承: 子类继承基类的成员,实现代码复用。多态: 不同子类对同一消息作出不同的反映。5.密封类(sealed):不能被继承,只能被实例化。定义一个类,这个类又没有继承其他类时,此类默认的父类是Object类当一个类继承Object后,需要重写父类的ToString()和Equals()方法重写方式如下:public override string ToString()return “要返回的字符串“public override bool Equals(object obj)/判断obj对象是否和当前类兼容if(obj is 当前类名)/如果obj对象和当前类兼容,则转换成当前类,用临时对象保存当前类名 临时对象名=obj as 当前类名;/将临时对象中的字段和属性与当前类的字段和属性比较if(临时对象名.属性名=this.属性名 & 临时对象名.字段名=this.字段名 & .)/所有内容都相同,返回truereturn true;/其余情况返回falsereturn false;关键字sealed将类定义为密封类密封类的特点:(1)类中不能有虚方法(2)密封类不能被其他类继承virtaulgetset6: 重载和重写的定义:重写(Override)在面向对象中重新实现父类的虚方法或者抽象对象方法,通过override关键字来重写体现面向对象的多态性。重写又称覆盖。 重载同一类中添加几个方法名字相同,参数个数或者参数类型不同的方法,称为重载,重载与方法的返回类型无关。7.里氏替换原则:子类的对象能够替换其父类父类对象不能够替换子类父类的方法都要在子类中实现或者重写is 检查对象是否与指定类型兼容as 用于在兼容的引用类型之间执行转换 8.虚方法(virtual):在C#中默认的方法形式都是非虚方法。如果父类的方法被定义为虚方法,那么子类就可以通过Override重写父类的虚方法,否则子类将隐藏(new)父类的方法。第六章接口:接口是单纯对事物行为的描述接口的作用:实现多重继承接口的特点:为了C#中继承单根性的扩展子类继承父类,可以实现多个接口接口中包含的内容:属性,方法,索引器,事件定义接口的语法:访问修饰符 interface 接口名成员public interface Iinterfacevoid On();void Off();定义接口的规范:(1接口名必须以大写字母I开头(2)接口的访问修饰符是可以选择的,但接口中的方法不能有任何的修饰符,默认为隐式的public(3接口中能定义属性、方法、事件、索引,不能定义常量,字段,构造方法等(4接口中不能定义构造方法,所以接口不能被实例化,即不能创建接口对象(5接口中只有属性、方法、事件、索引的定义,没有实现(6在接口中只需定义方法的返回值类型、方法名和参数,用;号结尾即可(7!)接口中只有行为的定义,没有具体的实现,可以把接口看作一种标准和规范,凡是实现接口的类,必须实现接口中的行为,接口约束了类的行为类实现接口的语法:类名:接口名类成员、方法注意:当类实现接口时要实现接口中的所有方法接口可以继承接口,当类实现的接口继承于其他接口时,类需要实现子接口和父接口中的所有定义内容父类实现接口中的方法时将方法定义为虚方法,子类继承父类时用override关键字重写父类的方法,接口中的方法子类就不需要再实现当不同的接口中有同名的方法时,需要显示实现接口,显示实现接口的语法:接口名.方法名()注意:在类中实现接口中的方法时,方法前不能使用访问修饰符,默认的访问修饰符是public调用显示接口的步骤:(1)声明接口,如:接口名 接口对象名;(2)用接口对象名指向类的对象,如:接口对象名=new 类名();或 类名 对象名=new 类名();接口对象名=对象名;(2)用接口对象调用显示实现的方法,如:接口对象名.方法名();可以将接口作为方法的参数,调用方法是时,根据程序需要将类的对象作为方法的参数,方法中自动调用类中的方法、属性第七章TreeView中的常用属性和方法:TreeNode对象用于创建节点节点对象名1.Nodes.Add(节点对象名2);-节点对象名2是节点对象名1的子节点节点对象名.Text-给节点设置文本注意:TreeView中只需添加根节点ExpandAll()方法展开所有节点SelectedNode属性得到是选中的TreeNode对象Level属性得到一个节点的深度(层次),根节点的深度是0,依此类推练习:完成以下结构:足下软件学院T130张三里斯王五T131范浩陈帅王宾.T132萧萧晨晨西西 第八章委托的定义:访问修饰符 delegate 返回值类型 委托名();将方法委托给对象的实现步骤:(1)定义委托,如:访问修饰符 delegate 返回值类型 委托名();(2)定义类,在类中定义方法,如:class 类名访问修饰符 返回值类型 方法名1().访问修饰符 返回值类型 方法名2().访问修饰符 返回值类型 方法名3().。(3)创建类的对象,如:类名 对象名=new 类名();(4)创建委托对象,如:方法一:委托名 委托对象名=new 委托名(对象名.方法名);方法二:委托名 委托对象名=对象名.方法名;注意:方法名后不要带()号(5)(可选步骤)给委托对象委托多个方法,如:委托对象名+=对象名.方法名2;(6)调用委托对象,如:委托对象名();注意:委托对象名后一定要跟()号注意:委托名、类名、方法名1、对象名、委托对象名均由程序员定义练习:使用委托,输出本周和下周的学习安排将方法给委托对象的规则:(1)委托的参数类型要和方法的参数类型一致(2)可以委托多个有返回值的方法,但委托对象的返回值是最后一个方法的返回值(3)+= 表示添加要委托的方法,-=表示去掉已经委托的方法练习:定义委托,执行接收一个数字,返回该数字的立方的方法定义事件的语法:访问修饰符 event 委托名 事件名;完成事件的步骤:。使用事件的步骤:(1)定义委托,如:访问修饰符 delegate 返回值类型 委托名();(2)定义触发事件的类及方法,如:class 类名1 /定义事件访问修饰符 event 委托名 事件名;/定义方法调用事件访问修饰符 返回值类型 方法名1()/代码部分/调用事件事件名();(3)定义响应事件的类及方法,如:class 类名2/定义方法响应事件访问修饰符 返回值类型 方法名2()/代码部分(4)订阅事件,如:/创建响应事件类的对象类名2 对象名2= new 类名2();/将类中方法给委托委托名 委托对象名=对象名2.方法名2;/创建触发事件类的对象类名1 对象名1=new 类名1();/将委托加载到事件对象名1.事件名+=委托对象名;/调用触发事件的方法对象名1.方法名1();this.button1.Click += new System.EventHandler(this.button1_Click);注意:委托事件的基础。第十章:文件操作File类-操作文件,是一个静态类Create(路径及文件名.后缀)-创建文件Delete(路径及文件名.后缀)-删除文件Exists(路径及文件名.后缀)-判断文件是否存在,存在返回true,不存在返回falseCopy(源文件路径,目标文件路径)-复制文件内容Move(源文件路径,目标文件路径)-移动文件(相当于剪切和粘贴)OpenWrite(路径及文件名.后缀)-以写入的方式打开文件,返回值的类型:文件流FileStream练习: 在e盘下创建文件:学习计划.txt,然后将文件移动到d盘,再判断d盘下是否存在该文件,如果存在,将文件删除向文件中写入内容的操作步骤(1)打开文件(可以判断,如果文件不存在则先创建,如果文件存在则以写的方式打开)(2)将要写进文件的内容用字节数组保存(3)调用文件流的Write()方法将内容写进文件(4)关闭文件流GetBytes(内容)-将内容转换成字节数组Encoding.Default.GetBytes(内容)-使用系统默认的字符集将内容转换成字节数组从文件中读取内容的操作步骤:(1)打开文件(可以判断文件是否存在)(2)定义字节数组(3)调用文件流的Read()方法,将文件中的内容读取到字节数组(4)将字节数组转换后输出(5)关闭文件流练习:向e盘下的“学些计划.txt”文件写入学习计划,然后读取学习计划,在控制台中打印File类静态类,FileInfo密封类使用建议:(1)如果需要对文件进行多次操作,应使用FileInfo类,因为在创建对象时就指定了正确的路径,File中的方法大多是静态的,每次都需要重新寻找文件,会花费更多资源(2)如果仅操作文件一次,应使用File类,直接调用方法,无需创建对象我的问题:WinForm 中的文件与Java中有何区别?第十一章:集合与泛型泛型:ListT:表示任意数据类型,用来约束添加到集合中的内容ArrayListList不相同点可以添加任何

温馨提示

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

评论

0/150

提交评论