
C# 的string类型赋值!
如下:stringa=b="asd";我想知道a初始化后,是否会重新占一块内存;还是a只是b的一个引用,指向同一个"asd"!...
如下:
string a=b="asd";
我想知道 a初始化后,是否会重新占一块内存;
还是a 只是b的一个引用 ,指向同一个"asd"! 展开
string a=b="asd";
我想知道 a初始化后,是否会重新占一块内存;
还是a 只是b的一个引用 ,指向同一个"asd"! 展开
5个回答
展开全部
我可以很肯定的告诉你,“string a=b="asd"; ”这句话本来就是错的,语法错误!至少在Visual Studio 2005无法通过!哪有人这样定义的。
应该这样:
string a="asd";
string b=a;
string类型是一种很特殊的引用类型,它是只读的!!!也就是上面的句子会导致两次分配内存空间!这也是为什么很多书都提到当操作很多字符串时,要使用stringbuidler,就是这个原因!
当然你可以使用String.Intern把它放到拘留池中这样就引用同一个对象了。
例如
string a="asd";
string b=string.intern(a);
应该这样:
string a="asd";
string b=a;
string类型是一种很特殊的引用类型,它是只读的!!!也就是上面的句子会导致两次分配内存空间!这也是为什么很多书都提到当操作很多字符串时,要使用stringbuidler,就是这个原因!
当然你可以使用String.Intern把它放到拘留池中这样就引用同一个对象了。
例如
string a="asd";
string b=string.intern(a);
展开全部
这样写是指向同一个"asd";
如果写成
a="asd";
b="asd";
这样就是有两个asd了
a 和 b 各 指向 一个。
如果写成
a="asd";
b="asd";
这样就是有两个asd了
a 和 b 各 指向 一个。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
废话!明显是开辟了两个空间噻,a一个、b一个,每个空间里面都存储的是"abc" ,你可以验证一下:
如果a是b的引用,那么你修改a的值,b的值也会跟着改变;如果没有改变,那么就说明是a和b都拥有自己的空间
如果a是b的引用,那么你修改a的值,b的值也会跟着改变;如果没有改变,那么就说明是a和b都拥有自己的空间
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
up,都说完了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询