list.CopyTo(): 复制全部元素。第三个为索引入参, 复制第一个数组中所有元素到第二个数组, 从索引位置开始放, 要保证第二个数组的长度。
list.CopyTo(): 复制全部元素。第三个为索引入参, 复制第一个数组中所有元素到第二个数组, 从索引位置开始放, 要保证第二个数组的长度。
dynamic:动态类型, 动态类型可以进行+运算
而 泛型 不可以使用+运算。
列表的insert()方法可以根据索引插入数据, 指定数据位置。
列表的remove()方法可以删除指定数据。 如果存在多个相同的元素, 则只删除索引最小的数据。
removeAt()方法 可以删除指定索引的元素。
removeAll()方法删除指定值的数据,所有该值的数据都会被删除。
indexOf()方法查询指定值在列表中的位置。若存在多个元素,则返回第一个元素的索引, 若不存在 则返回-1
引用类型在使用等号赋值时, 使用的是引用赋值。
每一个结构体被创建后都是直接放在栈空间里面, 其对应的属性值也是放在栈空间, 与类对象不同, 类对象的属性值放在堆空间。
虚方法使用virtual进行申明, 子类重写父类的虚方法, 则在调用时会直接调用子类重写的方法。
面向对象: 单继承多实现
new 关键字申明的方法属于隐藏方法, 父类申明的对象调用方法 则调用父类的, 子类申明的对象则调用子类的。
override重写方法, 方法被重写后都只会调用子类的方法。
运算符重载, 对象的运算符重载类似于java重载equals函数。
mfsdmffmlfmalasmd
接口可以继承接口,
实现了继承其他接口的接口时 必须实现继承的所有接口的方法。
类可以实现多个接口。
C# 的接口定义: 使用interface关键字进行修饰。
接口不包含数据成员。
接口的方法不能私有, 默认使用public进行修饰。
静态函数只能使用静态数据。也就是只能使用静态变量。
C# 中可以申明静态类
静态类中只能包含静态成员。
静态类不需要实例化对象。可以直接使用类进行调用。
静态类的使用场景:
1、 公共场景。
在10号项目中引用9号项目:
右键- 生成依赖项 - 选择项目引用- 选择需要引用的项目。
子类构造器调用父类构造器的语法:
子类构造器() : 父类构造器(父类中需要的参数) {}
抽象类使用 abstract 关键字进行修饰。 与java相同。
抽象类不能被实例化。可以包含普通函数和抽象函数。
类继承抽象类 必须实现抽象类中所有的抽象方法。
密封类和密封方法 使用sealed关键字进行修饰。
密封类不能被继承。 密封方法不能被重写。
如果方法要定义为密封方法时, 必须是重写之后的方法。
写隐藏方法的时候, 父类的方法不需要做任何改变。
子类进行重写时 是直接重写。然后在子类的修饰词加上new关键字。
隐藏方法在调用时必须使用子类申明的类型的对象。
隐藏方法在使用父类类型申明的对象调用时调用的是父类的方法。
子类重写父类的方法。
父类类型的对象 接收子类类型, java种的多态。
重写父类方法的两种形式:
1、 虚方法:
虚方法的使用场景: 子类需要重写父类已有的方法
定义: 父类的方法 使用 virtual关键字进行修饰, 子类重写的方法使用override 关键字进行重写。
在调用虚函数的时候会检查子类有没有重写该虚函数。
2、 隐藏方法:
C# 调用父类的成员变量使用base关键字
java使用super关键字
调用父类的函数也是如此。
this关键字和java中的this相同。 表示当前对象。
C# 的继承语法
子类:父类即可
java中的继承语法: 子类 extends 父类
java是单继承, 多实现,
C# 是单继承。
C# 的默认父类也是 Object
值传递和引用传递。