C#面向对象第二天总结

1. 命名空间
可以认为类是属于命名空间的
用于解决类重名问题,可以看作“类的文件夹”

2. 在一个项目中引用另一个项目中的类
1)第一步:添加引用
2)第二步:引用命名空间

3. 值类型和引用类型
区别:
1)值类型和引用类型在内存上存储的地方不一样
2)在传递值类型和传递引用类型的时候,传递的方式不一样
值类型我们称之为值传递,引用类型我们称之为引用传递
我们学的值类型和引用类型
值类型:int double bool char decimal struct enum
引用类型:string 自定义类
值类型的值存储在内存的栈当中
引用类型的值存储在内存的堆中

4. 字符串
1)字符串的不可变性
当你给一个字符串重新赋值之后,老值并没有销毁,而是重新开辟一块空间存储新值

当程序结束后,GC扫描整个内存,如果发现有的空间没有被指向,则立即把它销毁
2) 我们可以将字符串看做是char类型的一个只读数组
ToCharArray();将字符串转换为char数组
new string(char[]):能够将char数组转换为字符串

3)可以使用StringBuilder来对堆中的一块地址进行操作,而不另开空间,最后调用StringBuilder
对象的ToString()方法转换为字符串

StringBuilder和String的区别?
答:String在进行运算时(如赋值、拼接等)会产生一个新的实例,而StringBuilder则不会。
所以在大量字符串拼接或频繁对某一字符串进行操作时最好使用StringBuilder,它提供Append()方法
能够在已有对象的原地进行字符串的修改,简单而且直接

4)记录程序中某段程序所使用的时间,可以使用System.Diagnostics命名空间下的Stopwatch类
调用这个类的start() end()方法及elapsed属性

5. 字符串提供的各种方法
1)length:获得当前字符串中字符的个数
2)ToUpper():将字符串转换成大写形式 ToLower()将字符串转换成小写形式
3)Equals(string value,StringComparison.OrdinalIgnoreCase):比较两个字符串,可以忽略大小写
4)Split()分割字符串,把空格截掉并返回字符串的数组。 string.Split(new char[]{' '},StringSplitOptions.RemoveEmptyEntries)
5)Contains() 返回bool类型
6)Replace(string oldValue, string newValue) 返回string类型
7)SubString截取字符串 SubString(int startIndex, int length)返回string类型
在截取的时候要包含startIndex那个位置的值
8)StartWith()  EndsWith()判断字符串是否以“”开始或结束
9)IndexOf() 判断某个字符串在字符串中第一次出现的位置,如果没有返回-1
10)LastIndexOf() 判断某个字符串在字符串中最后一次出现的位置,如果没有则返回-1
11)SubString + LastIndexOf 可以获得路径最后的文件名
12)Trim() TrimStart() TrimEnd()去掉字符串中前后的空格
13)string.IsNullOrEmpty(string str)判断字符串是null或空字符串
14)string.Join(string separator,param string[] value)将字符串数组的每个元素按照指定的分割符连接

6. 继承
我们可能会在一些类中,写一些重复的成员,我们可以将这些重复的成员,单独封装在一个类中,作为这些类的父类
子类继承了父类,那么子类从父类那里继承过来了什么?
首先,子类继承了父类的属性和方法,但是子类并没有继承父类的私有字段
问题:子类有没有继承父类的构造函数?
答:子类并没有继承父类的构造函数,但是,子类会默认的调用父类无参数的构造函数,创建父类对象,
让子类可以使用父类中的成员
所以,如果在父类中重新写了一个有参数的构造函数之后,那个无参数的就被干掉了,子类就调用不到了,所以子类会报错
解决办法:
1)在父类中重新写一个无参数的构造函数
2)在子类中显式的调用父类的构造函数,使用关键字:base()
public student(string name,int age,int id):base(name,age){}

7. 继承的特性
1)继承的单根性:一个子类只能有一个父类
2)继承的传递性

8. 查看类图

9. 关键字new作用
1)创建对象
2)隐藏从父类那里继承过来的同名成员,隐藏的后果就是子类调用不到父类的成员 public new void SayHello(){}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值