时间:2021-05-20
在进行C#程序设计时,用的最多的莫过于string了,但有些时候由于不仔细或者基础的不牢固等因素容易出错,今天本文就来较为详细的总结一下C#中string的用法。具体如下:
1.string是一个引用类型,平时我们比较string对象,比较的是对象的值而不是对象本身
如下面代码所示:
string strA="abcde";string strB="abc";string strC="de";Console.WriteLine(strA == (strB+strC));//trueConsole.WriteLine((object)strA == (object)(strB+strC));//false因为字符串内容相同但引用的不是同一个实例
2.string对象是不可修改的
如下代码所示:
string strA="abcde";strA="aaaaa";从表面上看似修改了strA的内容,事实上"abcde"没有被修改,而是从新创建了一个对象"aaaaa",然后把该对象的引用赋给strA,最后"abcde"会被作为垃圾回收。
3.string的创建
直接赋值:
构造:
注意:没有String str=new String("abcde");这样的构造,string 是 .NET Framework 中String的别名。
4.string参数传递
string是引用类型,我们试图在一个函数里改变这个值
测试代码如下:
static void Main(string[] args){ string strA = "abcde"; Deal(strA); Console.WriteLine(strA); Console.ReadLine();}static void Deal(string str){ str = str.Substring(0, 2);}运行结果:abcde
原因是通过值传递引用类型的参数时,有可能更改引用所指向的数据,如某类成员的值。但无法更改引用本身的值,通过ref关键字传递参数可解决该问题。
修正后的代码如下:
static void Main(string[] args){ string strA = "abcde"; Deal(strA); Console.WriteLine(ref strA); Console.ReadLine();}static void Deal(ref string str){ str = str.Substring(0, 2);}结果:ab
此时传递的是引用本身,而不是副本
5.null 字符串和空字符串
null 字符串:没有分配内存;空字符串分配了内存,但内存里面没有数据.
测试代码如下:
static void Main(string[] args){ string strA = "1"; string strB = string.Empty; string strC = null; Console.WriteLine(int.Parse(strA));//正确 Console.WriteLine(int.Parse(strB));//输入字符串的格式不正确 Console.WriteLine(strC.ToString());//未将对象引用设置到对象的实例。 Console.ReadLine();}内置方法字符串是否为 null 或为空:
IsNullOrEmpty等同于 if (str == null || str.Equals(String.Empty))
IsNullOrWhiteSpace等同于 if (str == null || str.Equals(String.Empty) || str.Trim().Equals(String.Empty))
6.StringBuilder
现看如下测试代码:
string strA="abc"for(int i=0;i<10000;i++){ strA+="abc";}Consolse.WriteLine(strA);尽管该代码会出现以使用字符串串联来将新的字符追加到命名为 strA 的现有字符串,它实际上会为每个串联操作创建新的 String 对象。大大的降低了性能。可使用 StringBuilder 类代替String 类多次更改字符串值,StringBuilder 对象是可变的,当进行追加或删除字符串中的子字符串时,不会创建新的对象,而是在原来的对象上进行修改。 完成 StringBuilder 对象的值的修改后,可以调用其 StringBuilder.ToString 方法将其转换为字符串
修改后的测试代码如下:
StringBuilder strA=new StringBuilder();for(int i=0;i<10000;i++){strA.Append("abc");}Consolse.WriteLine(strA.ToString());相信本文所述实例对于大家牢固掌握C#的string用法能起到一定的帮助和借鉴作用。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例分析了C#中string和StingBuilder内存中的区别,有助于更好的掌握C#程序设计中string和StingBuilder的用法。分享给大家供
本文实例讲述了C#中异步回调函数用法。分享给大家供大家参考。具体如下:staticvoidMain(string[]args){FuncshowMessage=
实例介绍一下C#里List的用法。 主程序代码:staticvoidMain(string[]args) { ClassListlistClass=n
本文实例讲述了C#二维数组基本用法。分享给大家供大家参考,具体如下://定义数组string[,]classes=newstring[5,2];//正确的C#二
本文实例展示了C#程序设计中String与string的区别,对于C#初学者来说有很好的参考借鉴价值。具体如下:一、区别分析:String:类,System.S