C#视频看完了,感觉视频中讲的知识点很碎,颗粒归仓,就要总结总结。
以上就是我画的导图,下面我来一一解释一下:
1.值类型与引用类型
值类型 | 引用类型 | |
---|---|---|
内存分配 | 值在栈上 | 地址在栈上,值在堆上 |
构造函数 | 有一个默认的无参构造函数;如果自己写有参构造,则必须把字段都写上,且无参构造仍然可以存在 | 也有一个默认的无参构造;自己写有参构造时,不必把字段都写上,而且有了有参构造后,默认的无参构造会被干掉 |
是否可以为null | 不可以 | 可以 |
1)值类型
值类型包括:基本的数据类型(string除外)、枚举和结构体。
枚举:用来声明一组常量。(具体怎么使用,还需要更深的学习,但是我觉的它和常量的区别就是,常量都是散着的,枚举可以将多个常量封装到一起,使用起来比较方便,而且还可以用于当用户输入数字,转换成相应的字符串,算是一种规范吧)
结构体:可以一次性声明多个不同类型的变量,而数组是一次性声明多个相同类型的变量。
2)引用类型
引用类型包括:类、接口、集合等。
①类:c#视频中讲解了几个具体的类,有String类、文件类、目录类等。
String类:具体讲解了字符串的各种处理方法。
文件类:包括 File 类和 FileStream 类,File类用来读取小文件,FileStream类用来读取大文件,而且FileStream类还需要打开、关闭、释放资源等操作,不过直接用 using 就可以完成一切操作。
目录类:Directory类,包括对文件夹的各种操作、获取文件夹下的文件路径等。
②接口
接口是封装特定功能的一个集合。接口解决了c#单重继承的问题,即一个类只能继承一个父类,但却可以实现多个接口。接口中只能包含方法、属性、索引器和事件,没有构造函数,所以无法实例化。而且接口中的成员不可以有任何修饰符,一旦一个类实现了接口,就必须实现接口中的所有方法和属性。
③集合
我认为集合可以包含:数组、集合、泛型集合、哈希表、字典等。
数组:可以存储一组相同类型的变量,只是声明的时候就固定了大小。
集合(ArrayList):是一种动态数组,存储空间可以根据元素的多少动态增长,而且增加了添加、插入、移除元素等方法。
泛型集合(List<Type>):一种只能存储特定类型数据的集合,Type是要存储的数据类型。和集合的功能一样,但是却避免了拆装箱操作。
哈希表(HashTable):以键值对的形式来存储数据,数据类型为 object,和集合一样。
字典(Dictionary):也是以键值对的形式存储数据,和 List 一样规定了存储的数据类型。
2.运算符
运算符是各编程语言的基础,因为只要涉及到计算就要用到运算符,运算符的类型很多,想一下子记住不太可能,但是一定要注意各运算符之间的优先级顺序。
优先级:算术运算符 > 关系运算符 > 逻辑运算符 > 赋值运算符
3.面向对象
面向对象的三大特性:封装、继承、多态。
在我看来面向对象和面向过程最大的不同之处就在于:面向对象更有利于程序的复用和可扩展。而复用和可扩展就要抽象化,需要用到继承和多态。
封装:就是将一个类中的属性、方法等保护起来,外部不需要知道类中是怎么具体实现的,需要用到的时候直接调用就可以了,可以防止类中的成员被无意破坏。
继承:继承大大提高了代码的可复用性,子类可以继承父类所有的非 private 成员。继承中讲到了一个里氏替换,它可以让父类和子类相互转换。
多态:就是多个不同的对象收到相同的消息,但实现不同的行为。我觉得多态可以大大降低代码的冗余程度,而且在实现子类方法时,不需要考虑具体是哪个子类,不用判断转换了。里氏替换原则是多态的基础,多态的实现离不开里氏替换。
多态的两种表现形式:方法的重写和接口的实现。
4.GDI+
GDI+是 c# 提供的一种画图方式。
1.首先要明白画图都需要什么?
1)画图的对象(Graphics)
2)画图的方法
3)画笔
4)坐标
Graphics是一个画图的类,通常创建Graphics对象有两种方法:
①用 this.graphics 来创建
Graphics gp = this.CreateGraphics();
②可以在 paint 事件中用 e. 出来
private void Form1_Paint(object sender, PaintEventArgs e)
{
//实例化两个坐标
Point p_1 = new Point(100, 210);
Point p_2 = new Point(300, 170);
//实例化一个画笔
Pen p = new Pen(Color.Red);
Graphics gp = e.Graphics;
//画直线
gp.DrawLine(p, p_1, p_2);
}
c#还提供了很多画图的方法,使用的时候直接调用,只要传入相应的参数就可以了。
以下是如何画矩形的小例子:
//画矩形
Graphics gr = this.CreateGraphics();
Pen p = new Pen(Color.Red);
Size size = new Size(200, 150);
Rectangle rec = new Rectangle(new Point(500, 200), size);
gr.DrawRectangle(p, rec);