首页 > 代码库 > C#基础拾漏(4)
C#基础拾漏(4)
字符串:
可以看做一个字符数组
堆里面有一个字符串拘留池,创建一个字符串时,首先会在拘留池中找有没有相同的字符串,如果有,直接使变量指向拘留池中的字符串。没有才会再拘留池中创建。给你字符串变量重新赋值时,是一个重新查找拘 留池和创建的过程,不会修改原来创建的字符串
字符串对象一旦创建,不会被GC回收
字符串函数:
string.Conmpare():比较两个字符串第一个不同字符的大小
Concat():连接多个字符串
Contains():判断指定的串里面是否包含指定的子串
StartWith()/EndsWith():判断指定的字符是否以指定的子串开始/结尾
string.Format()格式化字符串,与Console.WriteLine()占位符用法类似。
IndexOf():查找指定子串在字符串中的索引
LastIndexOf():从字符串的结尾往前查第一次出现匹配的索引
Insert():在指定的索引位置插入指定的字符串
string.IsNullOrEmpty():判断字符串是否null或string.Empty
Remove():删除指定索引开始,指定长度的子串,不指定删除到结尾
Replace():把旧子串替换成新子串
Split():按指定字符(串)分割字符串,可传多个字符,返回字符串数组
Substring():指定索引开始,截取指定长度的子串
ToCharArray():转换成字符数组
ToLower():转换成小写
ToUpper():转换成大写
Trim():去掉前后空格或指定字符
索引器:
语法:public int this[int index]{get{return 0;}set{}}
ArrayList:
内部存储数据的是一个object数组
Add方法返回的是加进去元素所在的索引
Remove方法,删除指定的对象,删除第一个
Clear方法,清空数组之后,object数组长度不变
可以通过构造函数创建指定长度的ArrayList,这个长度是object数组的初始长度,不是对象的Count属性是object数组里元素的个数,所以没有通过Add方法添加元素之前,不能使用索引访问
foreach:
内部原理:
ArrayList list = new ArrayList();IEnumerator t = list.GetEnumerator();while(t.MoveNext()){ Console.WriteLine(t.Current);}
GetEnumerator方法来自IEnumerable接口,ArrayList类实现了IEnumerable接口。
GetEnumerator方法返回IEnumerator类型,所以要有一个实现IEnumerator接口的类
IEnumerator接口
其中有Current属性,MoveNext方法,Reset方法
Current返回当前指针指向的元素的值
MoveNext:将指针向前移动1位,并判断当前位有没有元素,返回bool
Reset:将指针重新指向0
实现IEnumerator接口:
1 private int count; 2 private int index = -1; 3 private object[] objs; 4 public MyEnumerator(object[] objs, int count) 5 { 6 this.objs = objs; 7 this.count = count; 8 } 9 public object Current10 {11 get{return objs[index];}12 }13 public bool MoveNext()14 {15 return ++index<this.count;16 }17 public void Reset()18 {19 index = -1;20 }
有了实现IEnumerator接口的类,就可以在GetEnumerator方法中创建一个类的对象返回