本帖最后由 Delver_Si 于 2014-11-18 19:43 编辑
第一章(C#OOP) 1..NET Framework(相当于java中的jdk) 2.包含2个部分:框架类库(工具包),CLR(CTS,CLS) 第二章(C#OOP) 1.C#语法:主要是对比与java的区别 (1)数据类型 字符串String:C#的“S”小写大写都可以,一般小写,java大写 布尔bool:java写法boolean (2)变量和常量 创建隐型变量:var 代替数据类型(参考课本案例) 定义常量:在定义变量前加const,表示该变量只能赋一次初始值,以后不能修改 (3)运算符,表达式(与java相同) (4)控制语句 if-else(同java) switch:1.()里可以用字符串来比较,java不行 2.每个case后必须要写break; java可不写 do-while,while,for:(同java) foreach: C#语法:foreach (数据类型 元素名 in 数组或集合对象) {…} Java语法:for (数据类型 元素名 : 数组或集合对象){…} 2.数组 (1)一维数组同java,但[]不能写在变量后面 (2)多维数组分2种,一种同java,另一种:int[,] = new int[3,3];2种写法含义不同 3.枚举:是一种自定义的数据类型,类似一种由多个常量组成的集合类型 (1)语法: 定义:enum 枚举类型名{常量1,常量2,常量3,…} 声明:枚举类型名变量名; 初始化:变量名 = 枚举类型名.常量1; (2)定义的位置:在main方法外面写,或class的外面写 4.数据类型转换:Convert.ToXXXX(任意类型数据);-把任意类型的数据转换为指定类型数据 第三章(C#OOP) 1.类:计算机模拟现实,描述一个现实事物的抽象,类是一个自定义的复合数据类型 把有关联的信息记录在一起,方便操作 (1)类包含2个主要成员:属性,方法 (2)定义的位置:一般新建一个class文件单独写,也可在其他class文件并列class写 (3)定义的语法: public class 类名 { //属性 publicstring id; publicstring name; //方法 public void study(){ Console.WriteLine(“我爱学习”);} } 2.对象:类的具体实现,描述一个具体的事物,可以理解为自定义类的变量 (1)实例化对象:(同变量的用法3步骤) 类名 对象名 = new 类名(); 或: 类名 对象名(变量名);//声明一个对象 对象名 = new 类名();//初始化这个对象(变量) (2)使用对象:一般是使用对象里的成员(属性和方法) 使用属性:对象名.属性名 使用方法:对象名.方法名(); 3.构造方法: 实例化对象时要“new 类名()”,“类名()”就是构造方法,用来构造对象的。 (1)、构造方法会在定义类时,自动生成,是隐藏的。 (2)、可以对构造方法重写,举例说明实例化对象时调用了构造方法。 如果想给对象赋初始值,可以给构造方法加参数 4.如果初始值不确定,可以用重载实现。 (方法重载:方法名相同,参数列表不同1、个数;2、类型;3、顺序) 注:(1)构造方法名与类名相同,没有返回值(void不写) (2)隐藏的不带参数的构造方法在手动书写后会被覆盖。 (3)一般定义类时,会用到2个构造方法:不带参和给所有属性赋值的带参。 5.如果构造方法参数名和属性名一样如何区分? this:表示本类对象。(当前所在类的对象) 要指定属性时用:this.属性名 6.命名空间:相当于文件夹 如果类放在不同的文件夹(命名空间)可以通过:”命名空间名.类名”访问 也可以在类的最上面写using 路径,后面的类就不用带路径了 7.访问修饰符: public:公开的,任何地方全部可用 internal:默认的,可以省略,同一命名空间内可以使用 protected:受保护的,父子类之间可以使用 private:私有的,只有自己可以使用 8.值类型和引用类型(参考以前学习的int和数组做参数调用时的区别) 值类型: int,double等八种基本数据类型,枚举,结构体(以后会学) 引用类型:数组,类 注:string特殊,是引用类型,但同时又是值传递 9.装箱和拆箱 装箱:把值类型转换为引用类型 拆箱:把引用类型转换为值类型 第四章 1.ref和out关键字 作用:把值类型的变量当作引用类型传递参数 写法:分别在形参和实参前面加ref(out) 注意:1.定义方法时,ref(out)写在形参数据类型前 2.调用方法时,ref(out)后的实参不能写常量,只能写变量 3.ref和out的区别:out后的实参可以是未初始化的变量,ref不行 2.static修饰符:静态的 使用位置:static写在访问修饰符(public等)后 使用对象:类,属性,方法 注:1.static修饰类时,该类里的所有属性和方法都必须是static的 2.用static修饰的属性和方法,直接通过:类名.属性(类名.方法)来调用 3.方法的重载:参考winform知识点 第五章 1.结构体:和类差不多的数据类型(类的前身) 定义:与类相同,把class关键字改成struct就行 例子:struct Student { public string name; public void study() {} } 与类的区别:1.结构体是值类型,类是引用类型(重点) 2.结构体可以不用new实例化,类必须用new 3.结构体不能被继承,类可以被继承 2.属性:用来封装类中成员变量(通过方法给成员加一些限制) 语法:private string name; // public string Name //注意第一个字母大写 { get{ return name; } //读属性 set{ name = value; } //写属性 } 自动属性:3.0版及以上的功能,更简单的写法 语法:public string Name { get; set; } 3.索引器:用来封装类中数组变量的成员,并优化数组中元素的查找方式 一般要写2种索引器 语法1:下标索引器 public Student this[int index] { get{ return students[index]; } set { students[index] = value; } } 语法2:字符串索引器//一般情况只有读属性,没有写属性 public Student this[string name] { get { Studentstu = null; foreach(Student s inthis.students) { if(s.Name == name) { stu = s; } } returnstu; } } 用法:对象名[index] 或 对象名[“字符串”] 第六章 1.委托:委托是一个数据类型,用这种数据类型声明的变量可以用来存储方法的签名 作用:可以把方法名当做参数来进行传递 用法:1.定义委托 public delegate 返回值类型 委托类型名(参数类型参数1,…); 2.声明并实例化委托变量(给委托绑定方法:返回值类型和参数列表必须一致) 委托类型名委托变量名 = new 委托类型名(方法签名);//方法签名不要() 3.调用委托 委托变量名(参数1,…); 特点:委托可以绑定多个方法”+=”,也可以撤销指定方法” -=” 匿名方法:不定义方法(没有方法名),直接把方法内容绑定到委托里 2.事件:封装了的委托变量(相当于类中属性和成员变量的关系) 用法:前提:定义委托 //任意一个类的外面写 1.定义事件(就是声明一个封装了的委托变量)//事件源中写 publicevent 委托类型名 事件名; 2.订阅事件(给事件绑定方法) 事件名 += new 委托类型名(方法签名);// 事件响应者的方法 3.引发事件(类似于调用委托)//事件源中写 事件名(参数1,…); 注意:事件一般涉及2个对象:事件源 和 事件响应者 第七章 1.继承:子类(派生类)继承父类(基类),子类就拥有了父类的属性和方法 语法:(定义类时) 子类:父类 特点:1.单根性。一个子类只能继承一个父类 特点:2.传递性。如果A继承B,B继承C,那么A也继承C 2.protected:(受保护的)用它修饰的成员变量或方法,就只能给它自己或它的子类使用 3.继承中的构造方法:先调用父类构造方法,再调用子类构造方法 方式1:隐式调用:默认情况下(不做任何指定),子类会调用父类不带参数的构造方法 方式2:显式调用:指定调用父类的某一个构造方法。 public Son(string name,string sex,stringcolor) : base(name,sex) { headColor = color; } 4.sealed:如果你的类不想被继承,可以加该关键字 5.继承中方法的重写(override)(多态) 语法:父类的方法用virtual(或override)修饰,子类可以用override对其进行重写 作用:参考案例lesson7 注:子类继承父类,那么可以把子类对象放到父类引用里 6.重载(overload)和重写(override)的区别 区别:1。重载是一个类里,有多个相同名称的方法;重写是在两个类里(父子类),各自有相同名称的方法。 2.重载方法名相同,参数列表不同;重写方法名相同,参数也相同,用virtual修饰父类方法,override修饰子类方法 第八章 抽象方法:用abstract修饰的方法 1.抽象类:用abstract修饰的类(public abstract class 类名) 特点:1.抽象类不能实例化对象,只能被子类继承 2.如果一个类里有抽象方法,那么这个类一定是抽象类;但定义一个抽象类,里面不一定非要有抽象方法。 3.抽象类里可以有具体的方法(非抽象方法) 4.子类继承抽象类时,必须实现抽象类里的所有抽象方法,除非子类也是抽象类 5.抽象类可以有构造方法,但自己不能调用,是给子类调用的 2.接口:定义一个标准和规范,关键字是interface,接口是一个数据类型 注意:1.接口里只能声明方法,属性,索引器,事件 2.接口里的内容默认的都是public,所以不用加修饰符,如果写了会编译报错 3.接口名以大写字母“I”开头 4.如果一个类实现接口,那么必须实现接口里的所有内容,除非该类是抽象类 特点:1.接口可以多继承(一个类只能继承一个父类,但是同时可以实现多个接口) 2.继承的父类必须写在“:”后的第一个位置,后面的接口用“,”隔开 3.如果一个类在实现多个接口时出现方法名相同的情况,要用显示实现接口 4.接口可以绑定 5.接口作为参数,也可以实现多态 3.is和as的用法 is:判断某一对象是否是某一类型,如果是返回true,如果不是返回false 例:if(c is IPrint) as:把某一对象转换为某一类型 例: IPrint c1 = c as IPrint; 4.抽象类和接口的区别(参考课本P189)
|