.NET基础第十天


一、命名空间 namespace(和C++中类似)
作用:用于解决类重名的问题,可以看作是类的文件夹
如果代码和被使用的类在一个namespace 则不需要using
在不同命名空间下类的调用有三种引用方式
○ 写全称 命名空间.类名
○ 先using引用命名空间,再调用
○ 记住命名空间,手动去引用
如果使用的类 当前引用的命名空间没有 可以用ALT+SHIFT+F10 调出引用命名空间的下拉菜单 或者alt+enter
二、在一个项目中添加另一个项目的类
1)添加引用
2)引用命名空间
三、值类型和引用类型
区别:
值类型和引用类型在内存上存储的地方不一样
在传递值类型和传递引用类型的时候,传递的方式不一样
值类型我们称之为 值传递,引用类型我们称之为引用传递。

值类型是存储在内存的栈当中,引用类型是存储在内存的堆当中。

四、字符串
1)字符串的不可变性
○ C#中字符串有一个很重要的特性,不可变性,字符串一旦声明就不再可以改变。所以只能通过索引来读取指定位置的char,不能对指定位置的char进行修改。
○ 当你给一个字符串重新赋值后,老值并没有销毁,而是开辟一块空间存储新值
2)可以将字符串看成是char类型的一个只读数组
说明:
如果要对char进行修改,那么就必须创建一个新的字符串,用 str.ToCharArray()方法得到字符串的char数组,对数组进行修改后,调用new string(char[] chs)这个构造函数来创建char数组的字符串。
一旦字符串被创建,那么char数组的修改也不会造成字符串的变化。例子:将字符串中的A替换为a
字符串的连接 + 两边只要有一个是字符串类型,另一个也会被自动转换成字符串类型
一切类型都可以调用ToString()方法转换成字符串类型
3)字符串提供的各种方法
五、继承
我们可能会在一些类中,写一些重复的成员,我们可以将这些重复的成员,单独封装到一个类中,作为这些类的父类。
Student、Teacher、Driver 子类 派生类
Person 父类 基类
问题:子类继承父类,那么子类从父类那里继承过来了什么?
首先,子类继承了父类的属性和方法,但是子类没有继承父类的私有字段。
问题:子类有没有继承父类的构造函数?
子类并没有继承父类的构造函数,但是在创建对象的时候,子类会默认调用父类的无参构造函数,在子类对象的内部创建父类的对象,让子类可以使用父类中的成员。
所以,如果在父类中重新写了一个有参数的构造函数之后,那个无参数的就被干掉了,子类就调用不到了,所以子类在编译时会报错。
解决办法:
1)在父类中重新写一个无参数的构造函数
2)在子类中显式的调用父类的构造函数,使用关键字 :base()
继承的特性:
1) 继承的单根性:一个子类只能有一个父类
2) 继承的传递性
查看类图
object是所有类的基类。
在C#中,所有的类都直接或间接的继承自object类(当我们定义一个类的时候,如果没有写继承一个类,那么这个类就继承了object类)
六、new关键字
1) 创建对象
2) 隐藏从父类那里继承过来的同名成员。
隐藏的后果:子类调用不到父类的成员
