集合类 列表List
List<int>list=new List<int>( ) ;
List<int> list=new List<int>( ) { 321,653,832 };
集合类 列表List
List<int>list=new List<int>( ) ;
List<int> list=new List<int>( ) { 321,653,832 };
一个命名空间下可以创建多个类的,只是我们习惯上一个类一个文件。
operator 运算符重载关键字,后面跟要进行重载的运算符
静态函数只能使用静态数据 不能使用非静态成员
如果把类声明为静态的 ,静态类里面只能包含静态成员,静态成员是不能实例化的
( )
new 隐藏继承的成员
abstract 使用abstract修饰的类为抽象类,抽象类只能是其他类的基类,不能与sealed,static一起使用。abstract 可以修饰抽象类中的方法或属性,此时,方法或属性不能包含实现,访问权限不能为私有。抽象类不能被实例化。
sealed 使用sealed修饰的类为密封类,灭你各类违法被继承,不能和abstract,static一起使用。当sealed用于方法或者属性时,必须始终与override一起使用
static
使用static修饰的类为静态类,静态类所有成员都必须是静态的,不能与abstract、sealed
一起使用。
static可以修饰方法、字段、属性或事件,始终通过类名而不是实例名称访问静态成员
静态字段只有一个副本。l
静态类不能被实例化。
const
使用const关键字来声明某个常量字段或常量局部变量,必须在声明常量时赋初值。
不能与static一起使用,常量默认是static的,常量字段只有一个副本。
readonly
使用readonly关键字来声明只读字段。
只读字段可以在声明或构造函数中初始化,每个类或结构的实例都有一个独立的副本。
可以与static一起使用,声明静态只读字段。
静态只读字段可以在声明或静态构造函数中初始化,静态常量字段只有一个副本。
virtual
virtual关键字用于修饰方法、属性、索引器或事件声明,并使它们可以在派生类中被重写。默认情况下,方法是非虚拟的。不能重写非虚方法。
override
要扩展或修改继承的方法、属性、索引器或事件的抽象实现或虚实现,必须使用override修饰符。
重写的成员必须是virtual、abstract或override的。
子类不能比父类访问权限更高
当前项目想使用别的项目中的类需要: 1,添加别的项目的引用 2,引入命名空间 3,把类设置为public
调用子类的构造函数,会先调用父类的构造函数,
抽象类
C#允许把类和函数声明为 abstract抽象类 抽象类不能实例化,抽象类可以包含普通函数和抽象函数,(什么是抽象函数)抽象函数就是只有函数定义没有函数体。抽象函数本身也是虚拟的Virtual( 只有函数定义,没有函数体实现)
类是一个模板,抽象类就是一个不完整的模板,不能使用部位完整的模板去构造对象
( 为什么把某个类定义成抽象类呢 ) 因为我们知道这个类是不能构造对象的,我们把这个类我们把这个类声明称抽象类,其他人使用抽象类创建对象的时候语法就会不通过 为了防止别人误操作,所以我们就把他声明成抽象的
隐藏方法加关键字new ,就会隐藏父类方法
当我们通过父类声明的对象去调用这个方法的时候如果是虚方法的话依然会调用重写后的方法,如果是隐藏方法的话他就会调用父类里面的方法
虚方法 virtual 把需要重写的方法返回值前加vierual
重写 override
隐藏方法
this 用来访问当前成员
base 用来访问父类成员
所有的数据类型都分为两类,值类型和引用类型
程序的内存区域:堆 栈 静态存储区
栈 空间比较小,但是读取速度快
堆 空间比较大,但是读取速度快
栈的特性:后进先出
数据只能从站的顶端插入和删除 把数据放入栈顶成为入栈( pust ) 从栈顶删除数据成为出栈( pop )
堆 是一块内存区域,与栈不同,堆里面的内存能够一任意顺序存入和移除
int age ; int 类型
var age: 匿名类型
var 匿名类型关键字
构造函数
我们构造对象的时候,对象的初始化过程是自动完成的,但是在初始化对象的过程中有的
时候需要做一些额外的工作,例如需要初始化对象存储的数据,构造函数就是用于初始化
数据的函数。
声明基本的构造函数的语法就是声明一个和所在类同名的方法,但是该方法没有返回类型。
public class Myclass {
public Myclass ( ) {
这个构造函数的函数体
}
}
当我们New对象的时候,当我们实例化对象的时候,当我们创建对象的时候就会调用构造函数。
因为构造函数就是用来构造对象的
构造函数作用 ( 构造函数一般用来初始化数据 )
字段加GetSet方法可以加限制
类和结构体的区别,
为了让编程更加清晰,把程序中的功能进行模块化划分,每个模块提供特定的功能,而且
每个模块都是孤立的,这种模块化编程提供了非常大的多样性,大大增加了重用代码的机
会。
面向对象编程也叫做OOP编程
简单来说面向对象编程就是结构化编程,对程序中的变量结构划分,让编程更清晰。
try { 可能出现异常的代码 }
catch { 要补捉的异常 }
finally { 不管是否出现异常都会执行 }