C#中string用法实例详解
在进行C#程序设计时,用的最多的莫过于string了,但有些时候由于不仔细或者基础的不牢固等因素容易出错,今天本文就来较为详细的总结一下C#中string的用法。具体如下:
1.string是一个引用类型,平时我们比较string对象,比较的是对象的值而不是对象本身
如下面代码所示:
stringstrA="abcde"; stringstrB="abc"; stringstrC="de"; Console.WriteLine(strA==(strB+strC));//true Console.WriteLine((object)strA==(object)(strB+strC));//false
因为字符串内容相同但引用的不是同一个实例
2.string对象是不可修改的
如下代码所示:
stringstrA="abcde"; strA="aaaaa";
从表面上看似修改了strA的内容,事实上"abcde"没有被修改,而是从新创建了一个对象"aaaaa",然后把该对象的引用赋给strA,最后"abcde"会被作为垃圾回收。
3.string的创建
直接赋值:
stringstrA="abcde";//创建一个内容为abcde的string对象,然后将该对象的引用赋给strA
构造:
char[]arr={"a","b","c","d","e"}; stringstrA=newstring(arr);//这里只列举一种
注意:
4.string参数传递
string是引用类型,我们试图在一个函数里改变这个值
测试代码如下:
staticvoidMain(string[]args) { stringstrA="abcde"; Deal(strA); Console.WriteLine(strA); Console.ReadLine(); } staticvoidDeal(stringstr) { str=str.Substring(0,2); }
运行结果:abcde
原因是
修正后的代码如下:
staticvoidMain(string[]args) { stringstrA="abcde"; Deal(strA); Console.WriteLine(refstrA); Console.ReadLine(); } staticvoidDeal(refstringstr) { str=str.Substring(0,2); }
结果:ab
5.null字符串和空字符串
null字符串:没有分配内存;空字符串分配了内存,但内存里面没有数据.
测试代码如下:
staticvoidMain(string[]args) { stringstrA="1"; stringstrB=string.Empty; stringstrC=null; Console.WriteLine(int.Parse(strA));//正确 Console.WriteLine(int.Parse(strB));//输入字符串的格式不正确 Console.WriteLine(strC.ToString());//未将对象引用设置到对象的实例。 Console.ReadLine(); }
内置方法字符串是否为null或为空:
IsNullOrWhiteSpace等同于 if(str==null||str.Equals(String.Empty)||str.Trim().Equals(String.Empty))
6.StringBuilder
现看如下测试代码:
stringstrA="abc" for(inti=0;i<10000;i++) { strA+="abc"; } Consolse.WriteLine(strA);
尽管该代码会出现以使用字符串串联来将新的字符追加到命名为strA的现有字符串,它实际上会为每个串联操作创建新的String对象。大大的降低了性能。可使用StringBuilder类代替String类多次更改字符串值,StringBuilder对象是可变的,当进行追加或删除字符串中的子字符串时,不会创建新的对象,而是在原来的对象上进行修改。完成StringBuilder对象的值的修改后,可以调用其StringBuilder.ToString方法将其转换为字符串
修改后的测试代码如下:
StringBuilderstrA=newStringBuilder(); for(inti=0;i<10000;i++) { strA.Append("abc"); } Consolse.WriteLine(strA.ToString());
相信本文所述实例对于大家牢固掌握C#的string用法能起到一定的帮助和借鉴作用。
相关文章
- C# Timer控件学习之使用Timer解决按钮幂等性问题案例分享
- C#-TreeView
- C#数据结构揭秘一
- C#反射实例学习及注意内容
- c#启动EXE文件的方法实例
- C#实现写入与读出文本文件的实例代码
- c#之利用API函数实现动画窗体的方法详解
- 基于c#接口的实例详解
- C#中怎么将一个List转换为只读的
- c#dataTable合并两个列到一个新列中的简单实例
- C#中使用反射获取结构体实例及思路
- C#开发Windows服务实例之实现禁止QQ运行
- c#DataTable与不同结构实体类转换的方法实例
- C#四舍五入(函数)用法实例
- c#和sql如何获得时间间隔的方法
- asp.net(C#)生成Code39条形码实例条码枪可以扫描出
- C#文件操作的简单实例
- C#中is与as的区别分析
- C#中static静态变量的用法实例
- C#实现的SN快速输入工具实例
- 基于C#生成随机数示例
- C#中读取App.config配置文件代码实例
- C#判等对象是否相等的方法汇总
- C#中的扩展方法详解
- C#.NET采用HTML模板发送电子邮件完整实例