标签:
C#内置类型中,字符串是唯一的引用类型,具有不可变性和密封性。
不可变性指字符串一旦创建成功,将不可更改,str1=str1,实际上在堆新创建了一个str1字符串对象,并且返回对该对象的引用。
密封性指字符串不能被继承。
不可变性和密封性能保证字符串类型更加高效和安全。
字符串操作
1、格式化字符串
String.Format
string str1 = "puguo 2530"; string strFormat = "{0,20}";//字符串格式化占20字符 string strResult=string.Format(strFormat,str1); Console.WriteLine("string.Format({0},{1})=[{2}]\n",strFormat,str1,strResult);
| 标准数字格式化字符串 | 含义 | 实例 | 
| C或c | 货币 | string.Format("{0:C}",10)=¥10.00 | 
| D或d | 补位 | string.Format("{0:D3},10")=010 | 
| E或e | 指数 | string.Format("{0:E3},10")=1.000e+001 | 
| F或f | 固定点 | string.Format("{0:F3},10")=10.000 | 
| G或g | 常规 | string.Format("{0:G3},10")=10 | 
| N或n | 千分符 | string.Format("{0:N},10000")=10,000.00 | 
| P或p | 百分号 | string.Format("{0:P},1")=100% | 
| X或x | 十六制 | string.Format("{0:X}",1900)=96C | 
| 自定义数字格式化字符串 | 含义 | 
| 0 | 0占位符 | 
| # | 数字占位符 | 
| . | 小数点 | 
| , | 千位分隔符 | 
| ; | 段分割符 | 
| % | 百分符 | 
2、比较字符串
(1)、string.Compare(str1,str2)
str1<str2 --->-1
str1==str2 --->0
str1>str2 --->1
(2)、string.CompareOrdinal(str1,str2); 与(1)区别,与本地化无关
str1<str2 --->-1
str1==str2 --->0
str1>str2 --->1
(3)、str1.CompareTo(str2);
str1<str2 --->-1
str1==str2 --->0
str1>str2 --->1
str2 is null --->1 ""比null大
(4)、string.Equals(str1, str2) <==> str1==str2
str1==str2 --->0
str1!=str2 --->!0
(5)、 str1.Equals(str2)
str1==str2 --->0
str1!=str2 --->!0
(6)、str1==str2
总结:静态方法比实例方法效率高,因为静态方法比实例方法先加载。总的来说,(1)(2)比(3)好,(4)比(5)好
3、字符串连接
(1)、str1+str2
(2)、string.Concat(str1,str2)
4、复制字符串
(1)、str2=string.Copy(str1);
copy创建一个新的实例字符串对象,str2,str1不是指向同一字符串引用。
(2)、str2=str1
直接复制,str2与str1指向同一字符串引用。字符串的不可变性导致字符串引用的指不可变,改变字符串的指知识改变字符串指向的字符串引用。
(3)、str2=(string)str1.clone()
str1.clone()返回的是object类型,强制转化为string,与(2)效果一致。
标签:
原文地址:http://www.cnblogs.com/puguo2530/p/4455924.html