关于string的问题 string是引用型是一块内存你可以这样试试m1="book";m2=m1;m2="look";输出m1看看是多少 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 同上, m2, m1指向同一 heap 块 不是同一块,String类的赋值和Equal函数已经重载了 MSDN中说String.Equal()(已重载)和相等运算符(没有重载)都是“确定两个 String 对象是否具有相同的值。” string p1 = "Book1";string p2 = p1;if(object.ReferenceEquals(p1, p2)) System.Diagnostics.Debug.WriteLine("Same reference!");else System.Diagnostics.Debug.WriteLine("Different reference!");p2 = "Book1";if(object.ReferenceEquals(p1, p2)) System.Diagnostics.Debug.WriteLine("Same reference!");else System.Diagnostics.Debug.WriteLine("Different reference!");p2 = "Book" + "1";if(object.ReferenceEquals(p1, p2)) System.Diagnostics.Debug.WriteLine("Same reference!");else System.Diagnostics.Debug.WriteLine("Different reference!");string p3 = "1";p2 = "Book" + p3;if(object.ReferenceEquals(p1, p2)) System.Diagnostics.Debug.WriteLine("Same reference!");else System.Diagnostics.Debug.WriteLine("Different reference!");//Output:Same reference!Same reference!Same reference!Different reference! 谢谢大家.如果m1,m2 是同一块内存的话,那么m1 = "exchange"那m2和m1是不为同一块内存.如果不是当m2 改变时 为字符串"book"开辟的内存空间是否会回收呢. string 是 ref类型建立在STACK上指向托管HEAP上的真实string的内容 string是特殊的类型,里面的比较,赋值都已经重新定义,在使用上跟一般的数据类型int,long一样,赋值会分配新的内存。 string m1= "aaa";string m2 = m1;outputDebugMsg(Object.ReferenceEquals(m1,m2).ToString()); <<==这里返回Truem1 = "bbb";outputDebugMsg(Object.ReferenceEquals(m1,m2).ToString());<<==这里返回False安装.NET的说明,m2=m1指向的同一块内存,m1="bbb"后,m1指向的是一块新的内存。事实上,如果你定义一个string m3="bbb", m3和m1指向的是同一块内存。 point to the same memery, the m2=m1 just as point to the handle of m1.but if you chang the m1 after m2=m1,the they will be different! 水晶报表显示数据库中图片 小弟刚学编程,求3个数比较大小的代码,要经过测试的 C#.NET开发的程序运行效率问题 在Winform程序中引用一个WebServices,调用其中的方法时出错了,高手请进,告诉小弟怎么来解决。 软考网络工程师 在Windows应用程序中怎样获得用户在dataGrid表中的所选择的数据的值? 在线等了!日期控件datatimepicker可以帮到数据库上吗? C#中的超级连接用什么函数?? C#程序染毒问题。。。 C# 中如何动态确定二维数组的大小?(不使用List) 更新數據庫的問題 急急急,高分相送
string p2 = p1;if(object.ReferenceEquals(p1, p2))
System.Diagnostics.Debug.WriteLine("Same reference!");
else
System.Diagnostics.Debug.WriteLine("Different reference!");p2 = "Book1";if(object.ReferenceEquals(p1, p2))
System.Diagnostics.Debug.WriteLine("Same reference!");
else
System.Diagnostics.Debug.WriteLine("Different reference!");p2 = "Book" + "1";if(object.ReferenceEquals(p1, p2))
System.Diagnostics.Debug.WriteLine("Same reference!");
else
System.Diagnostics.Debug.WriteLine("Different reference!");string p3 = "1";
p2 = "Book" + p3;if(object.ReferenceEquals(p1, p2))
System.Diagnostics.Debug.WriteLine("Same reference!");
else
System.Diagnostics.Debug.WriteLine("Different reference!");
//Output:Same reference!
Same reference!
Same reference!
Different reference!
如果m1,m2 是同一块内存的话,那么
m1 = "exchange"
那m2和m1是不为同一块内存.
如果不是当m2 改变时 为字符串"book"开辟的内存空间是否会回收呢.
建立在STACK上指向托管HEAP上的真实string的内容
一样,赋值会分配新的内存。
string m2 = m1;outputDebugMsg(Object.ReferenceEquals(m1,m2).ToString()); <<==这里返回Truem1 = "bbb";outputDebugMsg(Object.ReferenceEquals(m1,m2).ToString());<<==这里返回False安装.NET的说明,m2=m1指向的同一块内存,m1="bbb"后,m1指向的是一块新的内存。
事实上,如果你定义一个string m3="bbb", m3和m1指向的是同一块内存。