值类型OR引用类型?

benliliu 2008-03-21 08:29:15
object c = "c";
object d = c;
Console.WriteLine(d);
d = "d";
Console.WriteLine(c);

谁知道答案,并解释下
偶很郁闷
...全文
60 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
dancingbit 2008-03-21
  • 打赏
  • 举报
回复
不客气。
benliliu 2008-03-21
  • 打赏
  • 举报
回复
哦,了解了,thanks,芥子,十分感谢!
dancingbit 2008-03-21
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 benliliu 的回复:]
也就是为什么“修改ref2.a,也即修改ref1.a”
而为什么“修改object d时不修改c”?
[/Quote]
因为修改的是ref2.a,而不是ref2。
ProjectDD 2008-03-21
  • 打赏
  • 举报
回复
cc
dancingbit 2008-03-21
  • 打赏
  • 举报
回复
假如再来一个ref2=...,两个变量就不会再指向同一个对象。
纠正,没有两个实例,只有两个变量,实例只有一个,调用new的时候生成的。
benliliu 2008-03-21
  • 打赏
  • 举报
回复
也就是为什么“修改ref2.a,也即修改ref1.a”
而为什么“修改object d时不修改c”?
benliliu 2008-03-21
  • 打赏
  • 举报
回复
那为什么类的两个实例始终指向同一个对象,而object就变了呢?
dancingbit 2008-03-21
  • 打赏
  • 举报
回复

public class TypeRef
{
public string a = string.Empty ; //TypeRef的数据成员
public TypeRef(string i)
{
a = i; //使a指向传入的字符串
}
}

TypeRef ref1 = new TypeRef("a"); //创建一个新的TypeRef对象,此时ref1.a指向在此处传入的字符串
TypeRef ref2 = ref1; //ref2与ref1指向同一个对象
Console.WriteLine(ref2.a);
ref2.a = "b"; /*修改ref2.a,也即修改ref1.a,作用是使这个string类型的数据成员指向一个新的字符串,而非修改了原来的字符串*/
Console.WriteLine(ref1.a);
怫悰 2008-03-21
  • 打赏
  • 举报
回复
a
b
benliliu 2008-03-21
  • 打赏
  • 举报
回复
那下面这段代码呢
public class TypeRef
{
public string a = string.Empty ;
public TypeRef(string i)
{
a = i;
}
}

TypeRef ref1 = new TypeRef("a");
TypeRef ref2 = ref1;
Console.WriteLine(ref2.a);
ref2.a = "b";
Console.WriteLine(ref1.a);
dancingbit 2008-03-21
  • 打赏
  • 举报
回复
字符串在.net framework中是一个特例,一个字符串生成之后就不可修改,String类所提供的操作其实都包括隐含的生成新字符串的动作。如果需要在应用中修改字符串,可使用StringBuilder类。
benliliu 2008-03-21
  • 打赏
  • 举报
回复
那如何修改原来的字符串?
dancingbit 2008-03-21
  • 打赏
  • 举报
回复
d="d"的时候,d指向了另外一个字符串,而不是将原来的字符串做了修改。
benliliu 2008-03-21
  • 打赏
  • 举报
回复
object不是引用类型吗?
asxinyu 2008-03-21
  • 打赏
  • 举报
回复
C
C

第一个相当于 d=c="c",当然输出"C"啊
第二个c又没改变,当然也是输出c的值"c"啊
k19791 2008-03-21
  • 打赏
  • 举报
回复
低价转让:中#美#爱#梯#科技.Net软件工程师培训课程内容(共35G),声音清晰,课程完整!
需要这个培训视频的朋友请联系 QQ 936652114

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧