摘要:
本文导读:C# 中==是用来判断变量的值是否相等,相等返回true,不相等返回false。Equals是用来判断两个对象(除string类型外)是否相等,相等的 条件是:值,地址,引用全相等,因为String类重写了Equals方法,所以当string类型的对象用Equals方法比较时只比较两个对象的值相 等返回true,不相等返回false。C# 中有两种不同的相等:引用相等和值相等。 ◎值相等是大家普遍理解的意义上的相等:它意味着两个对象包含相同的值。 ◎引用相等意味着要比较的不是两个对象,而是两个对象引用,且两者引用的是同一个对象。 Equals: 下面的语句中,x、y 和 z 表... 阅读全文
摘要:
StringBuilder对象通过上面的分析可以看出,String类型在做字符串的连接操作时,效率是相当低的,并且由于每做一个连接操作,都会在内存中创建一个新的对象,占用了大量的内存空间。这样就引出StringBuilder对象,StringBuilder对象在做字符串连接操作时是在原来的字符串上进行修改,改善了性能。这一点我们平时使用中也许都知道,连接操作频繁的时候,使用StringBuilder对象。但是这两者之间的差别到底有多大呢?来做一个测试:1using System;2using System.Text;34namespace Demo55{6 /**//// 7 /// Stri 阅读全文
摘要:
字符串驻留看一下这段代码:1using System;23namespace Demo44{5 /**//// 6 /// String的驻留7 /// 8 public class Test9 {10 public static void Main(string[] args)11 {12 string a = "1234";13 string s = "123";14 s += "4";1516 string b = s;17 string c = String.Intern(s);1819 Console.WriteLine(( 阅读全文
摘要:
在.NET中,对字符串的比较操作并不仅仅是简单的比较二者的值,= =操作首先比较两个字符串的引用,如果引用相同,就直接返回True;如果不同再去比较它们的值。所以如果两个值相同的字符串的比较相对于引用相同的字符串的比较要慢,中间多了一步判断引用是否相同。看下面这段代码:1using System;23namespace Demo34{5 /**//// 6 /// String类型的比较7 /// 8 public class Test9 {10 public static void Main(string[] args)11 {12 string a = "1234";1 阅读全文
摘要:
概述String在任何语言中,都有它的特殊性,在.NET中也是如此。它属于基本数据类型,也是基本数据类型中唯一的引用类型。字符串可以声明为常量,但是它却放在了堆中。希望通过本文能够使大家对.NET中的String有一个深入的了解。不可改变对象在.NET中String是不可改变对象,一旦创建了一个String对象并为它赋值,它就不可能再改变,也就是你不可能改变一个字符串的值。这句话初听起来似乎有些不可思议,大家也许马上会想到字符串的连接操作,我们不也可以改变字符串吗?看下面这段代码:1using System;23namespace Demo14{5 /**//// 6 /// String连接 阅读全文
摘要:
C# string 特殊的引用类型 .Net 框架程序设计(修订版)中有这样一段描述:String类型直接继承自Object,这使得它成为一个引用类型,也就是说线程上的堆栈上不会驻留有任何字符串。(译注:注意这里的“直接继承”。直接继承自Object的类型一定是引用类型,因为所有的值类型都继承自System.ValueType。值得指出的是System.ValueType却是一个引用类型)。string str1 = "string"; string str2 = "string"; Console.WriteLine(string.ReferenceE 阅读全文