string类:不可变特性,可以看成是一个字符数组
length 长度属性
ISNullOrEmpty()
静态方法,判断是否为null或空
Join() 静态方法 联结合并字符串
Format() 静态 格式化字符串
IndexOf() 用来查找某个字符或字符串,在给定字符串中的下标,如果没有找到则返回-1
LastIndexOf()
最后一次出现的下标
SubString() Split() Replace() Trim()
字符串的恒定性,当字符串在内存已经被创建后,若再次创建相同值的字符串对象时,CLR做了优化,直接把第一个字符串的引用赋值给了第二个变量,也就是说两个变量字符串保存了相同的字符串对象的引用
为字符串设空值:string name = string.Empty;
如果代码里是直接将两个字符串相加,那么在CLR编译IL的时候,就会直接将相加拼接后的新字符串作为变量的值,如果是两个字符串变量相加的话,那么在CLR编译时,则会调用string.Concat(string a,string b)的方式拼接两个字符串的变量的值,最终返回一个新的字符串变量
StringBuild 相当于一个char数组
枚举 enum 为了固定一个变量的"范围",也方便程序员的使用,如果为枚举项赋了一个INT值,那么后面的依次递增
foreach:CLR在编译foreach代码时,直接调用被循环的集合对象的GetEnumerator方法以获得迭代器对象,直接调用对象的MoveNext方法检查是否存在元素,然后调用Get_Current方法获得元素
字符串:
拼结方式:
+ : 相加常量时,编译时直接改成拼接后的字符串
相加变量时 - Concat
相对上面来说,消耗时间一些
Concat : 可变参数 Conat(params string[] strArr)
效率高,统计数组里所有的字符串长度,一次性开辟空间
两个字符串变量:开辟一个空间将两个字符串存入
@ "":
就是一个字符串变量
StringBuilder: 拼接字符串变量
Append: 拼接字符串变量时高效,拼接字符串常量一般
构造函数中指定内部char数组的默认长度,提高效率.
String.Empty的定义为public static readonly String Empty =
"";,编译时会转化成””,但是String.Empty是一个常数,””是一个字符串对象,对字符串对象进行运算总是很慢的
string.Empty于c#对””在语法级别的优化。也就是说””是通过CLR进行优化的,CLR会维护一个字符串池,以防在堆中创建重复的字符串。而string.Empty是一种c#语法级别的优化,是在C#编译器将代码编译为IL(即MSIL)时进行了优化,即所有对string类的静态字段Empty的访问都会被指向同一引用,以节省内存空间。所以对””的优化更依赖CLR。
原文地址:http://www.cnblogs.com/wuchunhu/p/3766597.html