COOP知识点

COOP知识点

c#ooP的一些小知识点,希望对大家有用。

第一章(c#ooP)

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 类名

{

c#ooP的一些小知识点,希望对大家有用。

//属性 public string id; public string 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等八种基本数据类型,枚举,结构体(以后会学)

c#ooP的一些小知识点,希望对大家有用。

引用类型:数组,类

注: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版及以上的功能,更简单的写法

c#ooP的一些小知识点,希望对大家有用。

语法: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

{

Student stu = null;

foreach (Student s in this.students)

{

if ( == name)

{

stu = s;

}

}

return stu;

}

}

用法:对象名[index] 或 对象名[“字符串”]

第六章

1.委托:委托是一个数据类型,用这种数据类型声明的变量可以用来存储方法的签名 作用:可以把方法名当做参数来进行传递

用法:1.定义委托

public delegate 返回值类型 委托类型名(参数类型 参数1,…);

2.声明并实例化委托变量(给委托绑定方法:返回值类型和参数列表必须一致)

委托类型名 委托变量名 = new 委托类型名(方法签名);//方法签名不要()

3.调用委托

委托变量名(参数1,…);

特点:委托可以绑定多个方法”+=”,也可以撤销指定方法” -=”

匿名方法:不定义方法(没有方法名),直接把方法内容绑定到委托里

2.事件:封装了的委托变量(相当于类中属性和成员变量的关系)

c#ooP的一些小知识点,希望对大家有用。

用法:前提:定义委托 //任意一个类的外面写

1.定义事件(就是声明一个封装了的委托变量)//事件源中写

public event 委托类型名 事件名;

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,string color)

: base(name, sex)

{

headcolor = color;

}

4.sealed:如果你的类不想被继承,可以加该关键字

5.继承中方法的重写(override)(多态)

语法:父类的方法用virtual(或override)修饰,子类可以用override对其进行重写 作用:参考案例lesson7

注:子类继承父类,那么可以把子类对象放到父类引用里

6.重载(overload)和重写(override)的区别

区别:1。重载是一个类里,有多个相同名称的方法;重写是在两个类里(父子类),各自有相同名称的方法。

2.重载方法名相同,参数列表不同;重写方法名相同,参数也相同,用virtual修饰父类方法,override修饰子类方法

第八章

c#ooP的一些小知识点,希望对大家有用。

抽象方法:用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)

第九章

1.Math类:用于数学计算的一个静态类

常用方法:参考课本P197

2.Random类:求随即数

常用方法:r.next(minValue,maxValue);

3.DateTime类:计算时间的类

常用属性:now:当前时间

常用方法:(分2类)

1. 计算时间

2. 把时间类型转换为字符串类型

4.String类

常用属性:Length

常用方法:contains() Indexof() Replace() Split() Substring() 等

5.StringBuilder类:连接字符串时效率比String类高

c#ooP的一些小知识点,希望对大家有用。

常用属性:Length:字符串的长度。 capacity:所占用内存的大小。

常用方法:Apend():添加字符串。

注:该类一般在拼接sql语句时使用

6.正则表达式:由一些特殊符号组成的方便字符串查找的一种式子

Regex类:

常用方法:IsMatch(静态方法和实例方法)

//静态方法验证(前一个参数是要判断的字符串,后一个参数是正则表达式)

bool b = Regex.IsMatch(str1,@"\d");

//实例方法验证

//1.实例化一个正则对象(把正则表达式字符串放到Regex对象的属性里)

Regex reg = new Regex(@"\d");

//2.验证字符串str1是否匹配

b = reg.IsMatch(str1);

第十章

1.Array:是数组的基类(抽象类)

常用属性:Length

常用方法:Array arr = Array.createInstance(typeof(类型),长度); 构建数组对象

2.ArrayList:进化版数组的集合类。1.可以动态添加和删除。2.可以存储不同类型的元素。 常用属性:count

常用方法:Add(); Insert(); Remove(); RemoveAt();

访问元素:对象名[index] (和数组类似)

3.Hashtable:方便查询的集合类

常用属性:Keys:所有key的集合

Values:所有value的集合

常用方法:Add(key,value)

访问元素:对象名[key]

ArrayList和Hashtable区别:

1. 前者有顺序,后者没有顺序

2. 前者添加删除方便,后者查询效率高

4.泛型集合:由于集合存储的数据类型不同,使用起来不方便,也不安全,所以通过泛型来统一其数据类型。

1.ArrayList对应的泛型集合是List<T>

2.Hashtable对应的泛型集合是Dictionary<TKey,TValue>

使用方法和对应的集合相同。

5.排序接口Icomparable、Icomparable<T>、Icomparer<T> 参考案例Lesson10_3

c#ooP的一些小知识点,希望对大家有用。

6.其他:初始化器,Lambda表达式(以后c#方向会学习LInQ,有相关知识),扩展方法

第十一章

1.调试程序:查看“调试”菜单的功能

操作步骤:1.添加/删除 断点:左键单击代码右端

2.启动调试程序:快捷键F5,程序会自动暂停在第一个(下一个)断点处

3.单步跟踪:F10(一行一行执行),F11(如果碰到方法调用,会进入方法)

4.查看变量:选中变量 右键 添加(快速)监视

2.异常:程序编译时正确,运行时可能会出问题

写法:1.try

{可能出现异常的代码块}

catch (异常类型)

{出现异常后要执行的代码块}

2. try

{可能出现异常的代码块}

catch(异常类型1)

{出现异常后要执行的代码块}

catch(异常类型2)

{出现异常后要执行的代码块}

…….

3. try

{可能出现异常的代码块}

catch (异常类型)

{出现异常后要执行的代码块}

finally

{不管正常或异常代码都会执行}

throw:抛出异常给外层的代码块处理

第十二章

1.文件和文件夹的基本操作

文件:File静态类,create,copy,Move,Delete

文件夹:Directory静态类,createDirectory,Move,Delete

另外:File对应的非静态类是FileInfo,Directory对应的非静态类是DirectoryInfo

2.文件的读写:读和写类似(只演示一个)

写文件:StreamWriter,BinnaryWriter

string path = txtPath.Text;

//定义文件流对象(准备笔记本)

FileStream fs = new FileStream(path, FileMode.openorcreate, FileAccess.Write); //定义写对象(笔)

StreamWriter sw = new StreamWriter(fs);

c#ooP的一些小知识点,希望对大家有用。

//写东西

sw.Write(txtcontent.Text);

//关闭写对象

sw.close();

//关闭文件流对象

fs.close();

读文件:StreamReader,BinnaryWriter

3.对话框:openFileDialog,SaveFileDialog(用法类似,只写一个)

//实例化保存文件对话框对象

SaveFileDialog sfd = new SaveFileDialog();

//打开对话框

DialogResult dr = sfd.ShowDialog();

if (dr == DialogResult.oK)

{

txtPath.Text = sfd.Filename;//取得文件路径

}

常用属性:Filename;//取得文件路径

sfd.Filter = "c#文件(*.cs)|*.cs";//保存文件类型的格式提示

4.序列化:把对象转换为文件

反序列化:把文件转换为对象

用法:1.在要序列化对象的类上加[Serializable]

2.定义FileStream对象

3.定义序列化对象BinaryFormatter

4.调用序列化(反序列化)方法:Serialize(Deserialize)

5.关闭FileStream对象

补充知识点:

进程:运行中的程序Process

首页