首页 > 代码库 > C#中字符串的处理,对象的引用及继承(Tenth day)

C#中字符串的处理,对象的引用及继承(Tenth day)

又进入到了新的一周,现在到总结的时间了,继续为大家总结一下今天在云和学院所学的知识。

理论:

StringBuilder 和 String 的区别
   String 在进行运算时(如赋值、拼接等)会产生一个新的实例,而 StringBuilder 则不会。所以在大量字符串拼接或频繁对某一字符串进行操作时最好使用 StringBuilder,不要使用 String;
 如果要操作一个不断增长的字符串,尽量不用String类,改用StringBuilder类。两个类的工作原理不同:String类是一种传统的修改字符串的方式,它确实可以完成把一个字符串添加到另一个字符串上的工作没错,但是在.NET框架下,这个操作实在是划不来。因为系统先是把两个字符串写入内存,接着删除原来的String对象,然后创建一个String对象,并读取内存中的数据赋给该对象。这一来二去的,耗了不少时间。而使用System.Text命名空间下面的StringBuilder类就不是这样了,它提供的Append方法,能够在已有对象的原地进行字符串的修改,简单而且直接。当然,一般情况下觉察不到这二者效率的差异,但如果你要对某个字符串进行大量的添加操作,那么StringBuilder类所耗费的时间和String类简直不是一个数量级的。
对象的引用
int、decimal、bool、double byte 枚举结构等类型(值类型)是传递拷贝;对象(引用类型)则是传递引用。
方法间传递对象  String  引用类型  数组   类

结构如果写构造函数  那么就要把结构中所有的字段全部赋值

如果在结构中写了构造函数,那么 默认的构造函数还有,和类不同

在类中写了有参数的构造函数 ,无参数的构造函数直接被干掉了

并且  在类中的构造函数中 可以 不用把所有字段都赋值

值类型和引用类型的区别
1.将一个值类型变量赋给另一个值类型变量时,将复制包含的值。引用类型变量的赋值只复制对对象的引用,而不复制对象本身。
2.值类型不可能派生出新的类型:所有的值类型均隐式派生自 System.ValueType。但与引用类型相同的是,结构也可以实现接口。
3.值类型不可能包含 null 值:
4.每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。
 
堆和栈的区别
栈是编译期间就分配好的内存空间,因此你的代码中必须就栈的大小有明确的定义;局部值类型变量、值类型参数等都在栈内存中。
堆是程序运行期间动态分配的内存空间,你可以根据程序的运行情况确定要分配的堆内存的大小。

实操
StringBuilder的运用

接收用户输入的字符串,将其中的字符以与输入相反的顺序输出。"abc"→"cba"

  接收用户输入的一句英文,将其中的单词以反序输出。"hello c sharp"→"sharp c hello"

从Email中提取出用户名和域名

文本文件中存储了多个文章标题、作者,标题和作者之间用若干空格(数量不定)隔开,每行一个,标题有的长有的短,输出到控制台的时候最多标题长度10,如果超过10, 则截取长度8的子串并且最后添加“...”,加一个竖线后输出作者的名字。

分别写一个Teacher类和一个Student的类(继承的运用)

首先定义一个父类Person

在分别定义Teacher类和Student类

在Main函数里调用方法

 

好了,今天就先写到这里了,明天再继续吧...加油!

C#中字符串的处理,对象的引用及继承(Tenth day)