一、字符串的操作
1.字符串转换成小写、大写的方法
- ToLower():得到字符串的小写形式
- ToUpper():得到字符串的大写形式
- Trim():去掉字符串两端的空白
2.忽略大小写
- s1.Equals(s2,StringComparison.OrdinallgnoreCase):两个字符串进行比较,不区分大小写的比较
3.字符串的分割
- string Split(params char[]separator):将字符串按照制定的分割符分割为字符串数组
- string Split(char[]separator,StringSplitOptions options)将字符串按照制定的char分割符分割为字符串数组(options取RemoveEmptyEntries的时候一处结果中的空白字符串)
ps:一切类型都可以调用.ToString()方法转换成字符串类型
4.字符串函数
- string Replace(string oldValue, string newValue) 将字符串中的出现oldValue的地方替换为newValue
- string Substring(int startIndex),取从位置startIndex开始一直到最后的子字符串
- bool Contains(string value) 判断字符串中是否含有子串value
- bool StartsWith(string value) 判断字符串是否以子串value开始
- bool EndsWith(string value) 判断字符串是否以子串value结束
- int IndexOf(string value):取子串value第一次出现的位置
- int IndexOf(string value,int startIndex)
二、堆和栈的区别
- 栈是编译期间就分配好的内存空间,因此你的代码中必须就栈的大小有明确的定义;局部值类型变量、值类型参数等都在栈内存中。
- 堆是程序运行期间动态分配的内存空间,你可以根据程序的运行情况确定要分配的堆内存的大小。
三、值类型和引用类型的区别
- 将一个值类型变量赋给另一个值类型变量时,将复制包含的值。引用类型变量的赋值只复制对对象的引用,而不复制对象本身。
- 值类型不可能派生出新的类型:所有的值类型均隐式派生自System.ValueType。但与引用类型相同的是,结构也可以实现接口。
- 值类型不可能包含null值。
- 每种值类型均有一个隐式的默认构造函数来初始化该类型默认值。
类别 | 描述 | |
值类型 | 基本数据类型 | 整型:int |
长整型:long | ||
浮点型:float | ||
字符型:char | ||
布尔型:bool | ||
枚举类型 | 枚举:enum | |
结构类型 | 结构:struct | |
引用类型 | 类 | 基类:System.Object |
字符串:string | ||
自定义类:class | ||
接口 | 接口:interface | |
数组 | 数组:int[].string[] |
四、继承
1.继承的使用
- class Student:Person{......};
- class Teacher:Person{......};
- 子类继承了父类的成员,子类还可以有自己的成员。
- Person叫做父类(基类)Student和Teacher叫子类(派生类)
- Student继承了Person类
- Person类派生了Teacher类
- 在C#中,所有的类都直接或间接地继承自了object类。(当我们定义一个类的时候,如果没有写:继承一个类,那么这个类就继承了object类)
2.显示调用父类的构造函数
- 子类中如果有有参数的构造函数,会默认的去调用父类中的无参数的构造函数
- 显示调用父类的构造方法,关键字:base
五、Protected
- protected访问修饰符不允许其他非子类访问
- 继承的传递性:子类继承父类的属性,通过构造函数,把子类的属性的值传到父类属性里边去,给父类里边的字段赋值
- 继承的单根性 :基类(父类)只有一个,子类可以有多个