C#基础
基本语法
注释:
1.单行注释 //
2.多行注释 /* */
3.文档注释 ///
4.最高境界的注释:代码即注释,变量、方法、类等的命名要有意义;描述代码的逻辑功能,而不是字面意思 5.命名法:骆驼、帕斯卡等
数据类型:
-值类型:int, float, double, char, byte, Boolean, 枚举
-引用类型:DateTime, string, 所有类的对象类型转换:
-值类型:小到大自动转,大到小强制转,(类型),Convert.To***()
-引用类型:需要有继承关系才可以转换转化成字符串:ToString()
判断:if, switch循环:for, while, do...while
数组:使用方括号
-格式一:int[] array = new int[10];
-格式二:int[] array = new int[]{...};
-格式三:int[] array = {...};
-索引从0开始
-属性Length表示元素个数
-数组的长度不可变,即包含固定个数的元素
字符串string:
-不可变性:需要明确为字符串变量赋值,字符串变量的值才会改变
-重载了+、+=运算符,可以与其他类型的值连接,会自动将其他的类型转换成字符串(隐式调用ToString()方法)
-字符串默认可以被看作是一个字符数组处理,自左向右,索引从0开始
-方法IndexOf(string,index):从index位置开始,查找string第一次出现的位置,如果找到则返回对应的位置,如果没有找到则返回-1
-方法Replace(oldstring,newstring):将字符串中的所有oldstring替换成newstring
-方法Trim():去掉左侧、右侧的空格;如果指定参数,便是将左侧、右侧制定的开始字符删除,还有方法TrimStart()\TrimEnd()
-方法SubString(index,length):从index位置开始,截取长度为length的字符串,如果length省略表示截取到末尾
日期时间DateTime:
-属性Now:获取当前时间-两个时间做差,得到的是TimeSpan类型的值,可以获得两个时间的差的多种表示形式,如时、分、秒、毫秒等
面向对象:
-类的定义:由具体到抽象的过程
-关键字class
-访问修饰符
public公共
private私有
-创建对象:由抽象到具体的过程
-关键字new
-调用构造方法
封装:
-字段封装成属性,通过get与set两个方法进行字段的获取或设置
-将方法的多个参数封装到一个类中
-将一段代码封装到一个方法中
-将方法、字段、属性等封装到类中
-将拥有相同功能的类封装到程序集中
-方法重载:方法的签名相同,当时方法体不同
-当调用时,会根据方法的参数列表,确定具体调用哪个方法
继承:
-冒号,如A:B,表示类A继承于类B,A被称为子类(派生类),类B被称为父类(基类)
-所有类都直接或间接继承与Object类
-关键字this:表示当前类的某个实例,在代码段中可以直接访问当前类的成员
-关键字base:表示当前类的父类的某个实例,在代码段中可以直接访问父类的成员
-更好的实现了代码重用
-注意:一个类只能直接继承于一个类,即单继承
-注意:继承后,构造方法的调用执行过程
多态:
-父类型的变量可以指向子类型的对象
-对象可以完成向上类型转换
-运算符is:类型判断,返回bool值
-运算符as:类型转换,如果失败则返回null
-方法重写
-父类中使用virtual修饰方法
-子类中使用override修饰方法
-无论变量的类型,只需要确定变量的对象,指向子类对象时,调用的方法是子类定义的方法,而非父类中定义的方法
静态static
-面向对象互斥的一个概念
-不需要得到对象实例,直接食用类调用成员,在运动期会一直存在于内存中,并且是唯一的
-可以使用修饰类、方法、字段
-静态类不可继承
-可以在访问修饰符访问的范围内直接访问
抽象类abstract
-抽象方法:当一个方法只有签名,没有代码段时,则认为这个方法是抽象方法,使用abstract修饰
-抽象方法必须被定义在一个抽象类中
-抽象类不能被实例化
-子类在继承抽象类时,要求实现父类所有的抽象方法;否则,子类也必须是抽象类
接口interface
-在接口中只定义了方法的签名,没有定义代码段
-一个类可以实现多个接口,使用冒号链接
-弥补了类单继承的缺陷
-接口之间也可以有继承关系
枚举enum
-这是一种值类型的数据
-使用一种名称的方式来代表一个数字,使用起来更方便
-枚举的本质是数字
-默认是int类型
-默认从0开始
-默认步长为1
-可以规定为其他能够与int相互转换的类型,在枚举名称后冒号类型,如:byte,表示所有元素是byte类型
-标志枚举:每个枚举的值都是二进制表示的某一位
-使用Flags特性修饰
-赋值采用位左移运算1<<4,表示将1左移4位
-判断是否包含:使用位与运算&,再判断是否等于0
-同时包含多个:使用位或运算|
-与字符串转换:.ToString()将枚举的值进行输出;Enum.Parse()将字符串转换成制定的枚举值
-转换成数字:(int)