EverydayOneCat
「Pullover!」
一、C#基础
1.ArrayList
集合相对于数组的好处
1)、长度可变
2)、可以添加任意类型的元素
不好的地方:从集合中取值的时候必须要不停的做类型转换
常用方法:
Add():添加单个元素
AddRange():添加集合
Clear():清空集合中所有的元素
Remove():删除集合中的元素,括号里写谁,集合就删谁
RemoveAt():根据索引去删除集合中的元素
RemoveRange():删除一定范围内的元素
Insert():向集合的指定位置插入一个元素
InsertRange():向集合的指定位置插入一个集合
Contains():判断集合中是否包含某个元素
Sort():升序排列
集合的两个属性:
Count :获取这个集合中实际包含的元素个数
Capcity:获取这个集合可以包含的元素个数
例子:向10个长度的集合中插入随机0~9不可重复
1 | Random r = new Random(); |
2.Hashtable
var可以通过变量的值来推断出来这个变量的类型。
在Hash键值对集合中,键一定是唯一的,不能重复的,而值是可以重复的。
1 | Hashtable ht = new Hashtable(); |
3.多态
虚函数:抽象类、接口。首先将父类的方法标记为虚方法,标记为虚方法就意味着这个方法可以被子类重写。
1 | public class 父类{ |
4.抽象
1.抽象成员必须标记为abstract,并且不能有任何实现。
2.抽象成员必须在抽象类中。
3.抽象类不能被实例化
4.子类继承抽象类后,必须把父类中的所有抽象成员都重写。(除非子类也是一个抽象类,则可以不重写)
5.抽象成员的访问修饰符不能是private
6.在抽象类中可以包含实例成员。
并且抽象类的实例成员可以不被子类实现
7.抽象类是有构造函数的。虽然不能被实例化。
8、如果父类的抽象方法中有参数,那么。继承这个抽象父类的子类在重写父类的方法的时候必须传入对应的参数。
如果抽象父类的抽象方法中有返回值,那么子类在重写这个抽象方法的时候 也必须要传入返回值。
1 | public abstract class 父类{ |
抽象和虚函数的使用场景:
如果父类中的方法有默认的实现,并且父类需要被实例化,这时可以考虑将父类定义成一个普通类,用虚方法来实现多态。
如果父类中的方法没有默认实现,父类也不需要被实例化,则可以将该类定义为抽象类。
5.接口
接口是一种规范。接口名一般为I开头,able结尾。
只要一个类继承了一个接口,这个类就必须实现这个接口中所有的成员,接口不能被实例化。
1 | public interface M{ |
接口中的成员不能加“访问修饰符”,接口中的成员访问修饰符为public,不能修改。(默认为public)
接口中的成员不能有任何实现(“光说不做”,只是定义了一组未实现的成员)。
接口中只能有方法、属性、索引器、事件,不能有“字段”和构造函数。
接口与接口之间可以继承,并且可以多继承。
接口并不能去继承一个类,而类可以继承接口 (接口只能继承于接口,而类既可以继承接口,也可以继承类)
一个类可以同时继承一个类并实现多个接口,如果一个子类同时继承了父类A,并实现了接口IA,那么语法上A必须写在IA的前面。
class MyClass:A,IA{},因为类是单继承的。
显示实现接口的目的:解决方法的重名问题——比方说上面的就会在实现类中实现M.xxx(){}这个方法
什么时候显示的去实现接口:当继承的借口中的方法和参数一摸一样的时候,要是用显示的实现接口
当一个抽象类实现接口的时候,需要子类去实现接口。
6.密封类和部分类
sealed:表示密封类,一旦被次关键字修饰,将表示这个类不能被继承.密封类不可以被其他类继承,但是,可以去继承其他类。
partial:部分类——都是一个类的一部分,允许了类同名,适合不同人开发一个类使用
1 | public partial class Person |
突发情况
突发事件!突发事件!我宣布个事,我可能再也写不了c#了5555,因为
老子c#考完了哈哈哈哈哈哈哈哈
预习教程爱谁写谁写去,👴的c#职业生涯到此结束,人生有梦,各自精彩