一、命名空间
可以认为类是属于命名空间的。 如果在当前项目中没有这类的命名空间,需要我们收到导入这个类所在的命名空间。
- 用鼠标去点
- Alt+shift+F10
- using ..... 记住命名空间手动去引用
二、在一个项目中引用另一个项目的类
1.添加引用
2.引用命名空间
三、值类型和引用类型
1.区别:
1)值类型和引用类型在内存上存储的地方不一样。
2)在传递值类型和引用类型的时候,传递的方式不一样。 值类型我们称之为值传递,引用类型我们称之为引用传递。 我们学的值类型和引用类型:
****值类型:**int、double、bool、char、decimal(金钱)、struct、enum
**引用类型 :string,自定义类,数组
2.存储:
值类型的值存储在内存的栈当中。
引用类型的值存储在内存的堆当中。
三、字符串
1.)字符串的不可变性
当给一个字符串重新赋新值之后,老值并没有销毁,而是重新在堆当中开辟一块新空间存储新值; 当程序结束后GC扫描整个内存,如果发现空间没有被指向,则立即销毁
2)可以把字符串看做是char类型的一个只读数组。
ToCharArray(); 将字符串转换为char数组 nwe string(char[] chs):能够将char数组转换为字符串;
四、字符串提供的各种方法
1)、Length:获取当前字符串的个数
2)、ToUpper() :将字符串转换为大写形式;
3)、ToLower() :将字符串转换成小写形式;
4)、Equals() : 比较 两个字符串是否相同,可以忽略大小写;
5)、Split(): 分割字符串,返回字符串类型的数组。
6)、Substring(下标): 截取字符串,在截取的时候包含要截取的哪个位置。
7)、IndexOf(): 判断某个字符串在字符串中最后一次出现的位置,如果没有返回-1
8)、LastIndexOf(): 判断某个字符串在字符串中最后出现的位置,如果没有返回-1
9)、StartsWith(): 判断以... 开始
10)、EndsWith(): 判断以...结束
11)、Contains(): 判断某个字符串是否包含指定的字符串
12)、Replace(); 将字符串中的某个字符串替换成一个新的字符串
13)、Trim() : 去掉字符串中前后的空格'
14)、TrimEnd();去掉字符串中结尾的空格
15)、TrimStart():去掉字符串中前面的空格
16)、string.IsNullOrEmpty():判断一个字符串是否为空或者为Null
17)、string.Join(): 将数组按照指定的字符串连接,返回一个字符串。
五、继承
我们可能在一些类中,写一些重复的成员。 我们可以将这些重复的成员,单独封装到一个类中,作为这些类的父类。
子类继承了父类,那么子类从父类哪里继承过来了什么?
首先,子类继承了父类的属性和方法,但并没有继承父类的私有字段。
其次:子类没有继承父类的构造函数。但是,子类会默认的调用父类的无参构造函数来创建父类对象,让子类可以使用父类中的成员。所以,在父类中重新写了一个有参数的构造函数之后,那么无参构造函数就消失了,子类就调用不到,所以子类就会报错。
解决办法:
- 在父类中重新写一个无参数构造函数
- 在子类中显示的调用父类的构造函数,使用关键字:base()
六、继承的特性
- 继承的单根性:一个子类只能有一个父类。
- 继承的传递性:子传孙,孙传曾孙。
七、查看类图
八、object是所有类的基类
九、new关键字
1.创建对象 2.隐藏从父类那里继承过来的同名成员。隐藏的结果就是子类调用不到父类的同名成员